Input/Output Operators Overloading in C++

By | March 29, 2020

In C++ we use the stream extraction operators with stream statements (cin, cout) to show outputs and take input from the user. And using the C++ Operator Overloading techniques we can overload or redefine the stream extraction operators for user-defined class-based Objects.

Like other Operator we cannot directly overload the >> stream extraction operator and << stream insertion operator because cout and cin are the objects of iostream class, and the C++ compiler would directly jump to the iostream header file class for the cout and cin definition but if we want that compiler should consider out Overloaded definition we make a global method and if we want to allow them to access private data members of the class, we must make them a friend.

Vamware

Example

#include <iostream>
using namespace std;

class Complex
{
 private:
    int real, imag;
 public:
    Complex(int r = 0, int i =0)
    { 
         real = r;  
         imag = i;
    }

friend ostream & operator << (ostream &output, const Complex &c)
{
    output << c.real;
    output << "+i" << c.imag;
    cout<< endl;
    return output;
}

friend istream & operator >> (istream &in,  Complex &c)
{
    cout << "Please Enter the Real Part: ";
    in >> c.real;
    cout << "Please Enter the Imaginary part: ";
    in >> c.imag;
    return in;
}
};

int main()
{
   Complex c1;
   cin >> c1;
   cout << "The complex object is ";
   cout << c1;
   return 0;
}

Output

Please Enter the Real Part: 12
Please Enter the Imaginary part: 13
The complex object is 12+i13

Leave a Reply

Your email address will not be published. Required fields are marked *