将形参改为引用传递是可以的,而且程序更加高效,这样避免了不必要的数据复制,如下:
friend Complex operator +(const Complex& x,const Complex& y);
Complex operator +(const Complex& x,const Complex& y)
{
Complex c;
c.real=x.real+y.real;
c.imag=x.imag+y.imag;
return c;
}
而你说的不能使用引用传递值得是什么?
对于operator + 这个函数来说唯一不能使用应用的就是它的返回值,因为c是个局部变量,函数退出也就意味着变量的销毁。