当我们对一个类重载<<,>>运算符之后,就可以直接使用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;
}