对通过引用返回感到困惑

时间:2016-06-09 14:39:03

标签: c++ return-by-reference

我对以下示例感到困惑:

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 +=的返回类型是引用的,因为reim正在更新。我也不明白为什么要包含*this

3 个答案:

答案 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"指着。