Overloading stream insertion(<>) operators in C++

In this tutorial, we are going to see how we can overload stream insertion(<<) and extraction operators(>>) in C++. Overloading is an important aspect of any object-oriented programming language. Operator overloading refers to the overloading of the operators. If you don’t have much knowledge on the subject, spend some of your time here: Operator Overloading in C++

In this C++ tutorial, we will be overloading the insertion and the extraction operator. In general, the insertion operator(<<) is used for output, and the extraction operator(>>) is used for taking input. Let’s see how these can be overloaded.

An important thing to remember here is that the overloading function must be a friend of the class because we won’t be creating an object in order to call it.

You can see an example program in C++ that demonstrates very well how these insertion and extraction operators can be overloaded. Have a look at the code at each step.

#include <iostream> 
#include <string>
using namespace std; 

class Name
  string fname, lname; 
  Name(string f= " ", string l = "") 
      fname = f; 
      lname = l; 
  friend ostream & operator << (ostream &o, const Name &n); 
  friend istream & operator >> (istream &i, Name &n); 

ostream & operator << (ostream &o, const Name &n) 
  o << "First Name is: " << n.fname << endl;
    o << "Last Name is: " << n.lname << endl;
    return o;

istream & operator >> (istream &i, Name &n) 
  i >> n.fname;
    i >> n.lname;
    return i;

int main() 
Name name; 
cout << "Enter name:" << endl;
cin >> name; 
cout << name; 
return 0; 

The above program gives the output:

Enter name:
Ranjeet Verma
First Name is: Ranjeet
Last Name is: Verma


Thank you.

Also read: Function Overloading in C++

Leave a Reply