Class level ostream operator and istream operator : overload ostream istream operator « Operator Overloading « C++ Tutorial






#include<iostream.h>
#include<fstream.h>

class ThreeD
{
  int x,y,z;
public:
  ThreeD(int i,int j,int k){
    x=i;
    y=j;
    z=k;
  }
  friend ostream& operator<<(ostream& stream,ThreeD ob);
  friend istream& operator>>(istream& stream,ThreeD ob);
};
ostream& operator<<(ostream& stream,ThreeD ob)
{
  stream<<ob.x<<' '<<ob.y<<' '<<ob.z<<'\n';
  return stream;
}
istream& operator>>(istream& stream,ThreeD  ob)
{
  stream>>ob.x>>ob.y>>ob.z;
  return stream;
}
main()
{
  ThreeD o1(1,2,3),o2(4,5,6);
  ofstream out("test");
  if(!out)
  {
    cout<<"Cannot open output file\n";
       return 1;
  }
  cout<<o1<<o2;
  out.close();
  ifstream in("test");
  if(!in)
  {
    cout<<"Cannot open input file\n";
       return 1;
  }
  ThreeD o3(0,0,0),o4(0,0,0);
  in>>o3>>o4;
  return 0;
}
1 2 3
4 5 6








10.15.overload ostream istream operator
10.15.1.Class level ostream operator and istream operator
10.15.2.istream operator with data check
10.15.3.Class ostream operator
10.15.4.ostream and istream operator for a class
10.15.5.Complex logic in ostream operator
10.15.6.friend ostream operator for private fields
10.15.7.Overload ostream and istream operator
10.15.8.Ignore: manipulator that ignores N lines
10.15.9.Overloading >>: To demonstrate a custom inserter, one will be created for objects of type phonebook, shown here.
10.15.10.Overload << (inserter)