gpt4 book ai didi

c++ - 为什么我们在重载 += 运算符时必须通过引用返回

转载 作者:行者123 更新时间:2023-11-30 02:39:34 26 4
gpt4 key购买 nike

当重载 += 运算符时,为什么我们必须通过引用返回。例如下面的代码也做同样的事情

class Integer
{
int i;
public:
Integer::Integer(int i):i(i){}
void operator+=(const Integer& arg)
{
i = i + arg.i;
}
};

//main.cpp
int _tmain(int argc, _TCHAR* argv[])
{
Integer a(10),b(20);
b += a;
}

大多数书籍建议对于上述运算符重载函数应该通过引用返回,即如下:

Integer& operator+=(const Integer&)
{
i = i + arg.i;
return *this;
}

如果我们通过引用返回,那么在执行下面的语句时返回对象引用会发生什么:

b += a;

最佳答案

If we return by reference then what happens to the return object reference when below statement is executed:

b += a;

真的没什么。语句被执行,引用未被使用并且 b 继续它的生命。

通过引用返回的这个有趣的东西是链接调用:如果你不通过引用返回,你不能做(b += b) += a。这看起来像这样:(void) += const Integer &,因为 b += b 由于 而属于 void 类型operator+= 返回 void

关于c++ - 为什么我们在重载 += 运算符时必须通过引用返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29710644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com