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 : 10

C++ Operator Overloading and Function Overloading

other extensions