运算符重载
在c++里,利用操作符重载,操作符就相当于一种函数。
如:c1(this)+=c2
如果c1+=c2+=c3:在这里,为什么操作符重载的返回值不能是void呢?因为,+=最后还要把结果赋值给前者,所以c2+=c3结果的值又要作为参数传递,所以要与操作符重载函数的形参类型相同。
complex& //接受者
_doapl(complex* ths,const complex& r)//return by reference
{
......;
teturn *ths;//传递者
}
complex& complex::operator += (const complex& r)//成员函数
{
return _doapl(this,r)
}
complex operator + (const complex& x,const conplex& y)//非成员函数
{
return complex(real(x)+real(y),imag(x)+imag(y));
//typename() 创建 temp object.
}
//上面这个函数一定不可以return by reference,因为它们的返回值为local object
return by reference
传递者无需知道接受者是以reference形式接受。
如*ths是一个值,而complex&是reference,这是没关系的。