c++重载<<操作符需要注意的,重载<<操作符只能用非成员函数,一般情况下,成员函数和非成员函数都是可以的。
ostream& operator <<(ostream& os,const complex & x){
return os<<"("<<real(x)<<","<<imag(x)<<");
}
{
complex c1(2,1);
cout<<conj(c1);
cout<<c1<<conj(c1);
}
注意:
1.ostream& os这里为啥不加const:因为在os不停的在改变,(可以理解为一直往屏幕里输送东西);
2.为啥返回值为引用:ostream&
如果返回的是一个value 也是可以的,但是只能打印一次,cout<<conj(c1);
如果是引用的话,可以对本体一直进行操作。 cout<<c1<<conj(c1);
3.<<操作符重载只能作为非成员函数处理,由于<<左边的对象是一个ostream对象,<<右边的是类对象,能当作类的成员函数的左边必须是类对象。