C++ Input/Output Operator Overloading
C++ Operator Overloading and Function Overloading
C++ is able to use the stream extraction operator >> and the stream insertion operator << to input and output built-in data types. You can overload the stream extraction operator and stream insertion operator to operate on user-defined data types such as objects.
Here, one important point is that we need to declare the operator overload functions as friend functions of the class, so that we can call the functions directly without creating an object.
The following example demonstrates how to overload the extraction operator >> and the insertion operator <<.
Example
#include <iostream>
using namespace std;
class Distance
{
private:
int feet; // 0 to infinity
int inches; // 0 to 12
public:
// Required constructor
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;
}
When the above code is compiled and executed, it produces the following results:
$./a.out Enter the value of object : 70 10 First Distance : F : 11 I : 10 Second Distance :F : 5 I : 11 Third Distance :F : 70 I : 10other extensions