Overloading

3. Relational operators overloading
There are various relational operators supported by C++ language like (<, >, <=, >=, ==, etc.) which can be used to compare C++ built-in data types.
You can overload any of these operators, which can be used to compare the objects of a class.
Following example explains how a < operator can be overloaded and similar way you can overload other relational operators.
#include < iostream >
using namespace std;
class Distance
{
private:
int feet;
int inches;
public:
Distance(){
feet = 0;
inches = 0;
}
Distance(int f, int i){
feet = f;
inches = i;
}
void displayDistance()
{
cout << "F: " << feet << " I:" << inches < }
Distance operator- ()
{
feet = -feet;
inches = -inches;
return Distance(feet, inches); }
bool operator <(const Distance& d)
{
if(feet < d.feet)
{
return true;
}
if(feet == d.feet && inches < d.inches)
{
return true;
}
return false;
}
};
int main()
{
Distance D1(11, 10), D2(5, 11);
if( D1 < D2 )
{
cout << "D1 is less than D2 " << endl;
}
else
{
cout << "D2 is less than D1 " << endl;
}
return 0;
}
Output: -
D2 is less than D1
4. Input/Output operators overloading
C++ is able to input and output the built-in data types using the stream extraction operator >> and the stream insertion operator <<. The stream insertion and stream extraction operators also can be overloaded to perform input and output for user-defined types like an object.
Here, it is important to make operator overloading function a friend of the class because it would be called without creating an object.
Following example explains how extraction operator >> and insertion operator <<.
#include < iostream >
using namespace std;
class Distance
{
private:
int feet;
int inches;
public:
Distance(){
feet = 0;
inches = 0;
}
Distance(int f, int i){
feet = f;
inches = i;
}
friend ostream &operator<<( ostream &output,const Distance &D )
{
output << "F : " << D.feet << " I : " << D.inches;
return output;
}
friend istream &operator>>( istream &input, Distance &D )
{
input >> D.feet >> D.inches;
return input;
}
};
int main()
{
Distance D1(11, 10), D2(5, 11), D3;
cout << "Enter the value of object : " << endl;
cin >> D3;
cout << "First Distance : " << D1 << endl;
cout << "Second Distance :" << D2 << endl;
cout << "Third Distance :" << D3 << endl;
return 0;
}
Output: -
Enter the value of object :
70
10
First Distance : F : 11 I : 10
Second Distance :F : 5 I : 11
Third Distance :F : 70 I : 10
5.Increment ++ and Decrement --
The increment (++) and decrement (--) operators are two important unary operators available in C++.
Following example explain how increment (++) operator can be overloaded for prefix as well as postfix usage. Similar way, you can overload operator (--).
#include < iostream >
using namespace std;
class Time
{
private:
int hours;
int minutes;
public:
Time(){
hours = 0;
minutes = 0;
}
Time(int h, int m){
hours = h;
minutes = m;
}
void displayTime()
{
cout << "H: " << hours << " M:" << minutes < }
Time operator++ ()
{
++minutes;
if(minutes >= 60)
{
++hours;
minutes -= 60;
}
return Time(hours, minutes);
}
Time operator++( int )
{
Time T(hours, minutes);
++minutes;
if(minutes >= 60)
{
++hours;
minutes -= 60;
}
return T;
}
};
int main()
{
Time T1(11, 59), T2(10,40);
++T1;
T1.displayTime();
++T1;
T1.displayTime();
T2++;
T2.displayTime();
T2++;
T2.displayTime();
return 0;
}
Output: -
H: 12 M:0
H: 12 M:1
H: 10 M:41
H: 10 M:42


Free Web Hosting