当我们对一个类重载<<,>>运算符之后,就可以直接使用cout<<x,cin>>x两种简单的操作 a.重载输出运算符<< 因重最左边的操作数是ostream,自然就不能用类的成员函数重载,而只能以类的友元函数进行重载 //<<函数定义格式 friend ostream operator<<(ostream&,const nameclass&)const; //<<函数实现部分 ostream & operator<<(ostream& out,const classname& object) { //local delcare if any //check object ostream //output the members of the object //... return out; } b.重载输出运算符>> 因重最左边的操作数是istream,自然就不能用类的成员函数重载,而只能以类的友元函数进行重载 //<<函数定义格式 friend istream operator>>(istream&,const nameclass&)const; //<<函数实现部分 istream & operator>>(istream& in,const classname& object) { //local delcare if any //check object istream //output the members of the object //... return in; } c.<<,>>代码实现 //重载函数<<,>>定义 class OpOver { public: OpOver(int i=0;int j=0){a=i;b=j;}; friend ostream& operator<<(ostream&,const OpOver&); friend istream& operator>>(istream&,const OpOver&); OpOver operator+(const OpOver&)const; bool operator==(const OpOver&)const; private: int a; int b; }; //重载函数<<,>>实现 ostream& operator<<(ostream& out,const OpOver& right) { out<<right.a<<","<<right.b; return out; } istream& operator>>(istream& in,const OpOver& right) { in>>right.a>>right.b; return in; }
|