我对以下示例感到困惑:
class complex {
double re, im;
public:
complex(double r, double i) : re{r}, im{I} ()
complex& operator+= (const complex&z) { re += z.re; im += z.im; return *this; }
};
我不明白为什么operator +=
的返回类型是引用的,因为re
和im
正在更新。我也不明白为什么要包含*this
。
答案 0 :(得分:1)
它也可以返回void
。
C ++约定是operator+=
返回对其左操作数的引用,因此您可以编写类似if((x += y) > 10)
的表达式。
答案 1 :(得分:1)
按照惯例,我们尝试operator
用于类的内置工作。
和
int i = 0;
(i += 40) += 2;
有效。
因此,通过引用返回允许对于类。
答案 2 :(得分:0)
第一:
您的运算符+ =未正确声明。它应该是
complex& operator+=(complex const& other){...}
第二个回答你的实际问题,你正在返回*这是因为+ =运算符是一个复合赋值运算符,它正在修改赋值给的变量的内部状态。所以你返回一个对变量的引用" this"指着。