gpt4 book ai didi

c++ - 重载时 operator+= 的返回类型

转载 作者:搜寻专家 更新时间:2023-10-31 00:10:50 24 4
gpt4 key购买 nike

我在互联网上浏览了一些运算符重载的例子,其中 operator+= 的返回类型是 T&。由于我们不能像 T a = b = c; 那样链接 += 是否可以将返回类型声明为 void。使用 void 时,一切似乎都正常工作。有什么情况是我们必须要避免的吗?

例如:

class MyInteger{
private:
int x;
public:
MyInteger(const int& a):x(a){}
void operator+=(const MyInteger& rhs){
x += rhs.x;
}
};

MyInteger a(10);
a += a; //No need to return anything because we can't chain
a = a + (a += a);

最佳答案

您希望 operator += 返回对当前对象的引用的另一个原因是当您想要重载 operator + 时。由于您正在编写整数类,因此如果 += 可用,但 + 不可用,则意义不大。

这是 operator + 的样子:

MyInteger MyInteger::operator+(const MyInteger& rhs)
{
MyInteger temp(*this);
return temp += rhs; // <-- Uses operator +=
}

如果 operator += 没有返回引用,上面的代码将无法工作(甚至无法编译)。

关于c++ - 重载时 operator+= 的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36232136/

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