Operator Overloading
Operator Overloading
Computer Applications-2
Operator 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 kilometer;
int meter;
public:
Distance() {
kilometer = 0;
meter = 0;
}
Distance(int km, int m) {
kilometer = km;
meter = m;
}
friend ostream &operator<<( ostream &output, const Distance &D )
{
output << " KM : " << D.kilometer << " M : " << D.meter;
return output;
}
return 0;
}
Overloading 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 Test {
private :
int i;
public:
Test() {i=5;}
// overloaded prefix ++ operator
Test operator++() {
Test temp;
++i;
temp.i=i;
return temp;
}
// overloaded postfix ++ operator
Test operator++(int) {
Test temp;
temp.i=i++;
return temp;
}
void Display() {
cout<<"i= "<<i<<endl;}
};
int main() {
Test obj1, obj2;
obj1.Display();
obj2.Display();
obj2=++obj1;
obj1.Display(); Output
obj2.Display();
i=5
obj2=obj1++; i=5
obj1.Display(); i=6
obj2.Display(); i=6
return 0; i=7
} i=6
Assignment Operators Overloading
You can overload the assignment operator (=) just as you can other
operators and it can be used to create an object just like the copy
constructor.
Following example explains how an assignment operator can be
overloaded.
#include <iostream>
using namespace std;
class Distance {
private:
int kilometer;
int meter;
public:
// Constructors
Distance() {
kilometer = 0;
meter = 0;
}
Distance(int km, int m) {
kilometer = km;
meter = m;
}
void operator = (const Distance &D ) {
kilometer = D.kilometer;
meter = D.meter;
}
void Display() {
cout << " KM: " << kilometer << " M:" << meter << endl;
}
};
int main() {
Distance D1(20, 500), D2(50, 800);
return 0;
}
When the above code is compiled and executed, it produces the following result −