【发布时间】:2014-01-26 21:08:36
【问题描述】:
为什么要通过引用返回运算符链接?
我已经查看了很多关于 SO 的答案,并且常用短语是“通过引用返回以允许运算符链接”,但没有解释,我不明白为什么我不能以其他方式做到这一点。
例如,这似乎在我的系统上编译并且工作正常,并且链接工作:
TestClass operator+=(TestClass tc){
somePrivateValue += tc.somePrivateValue;
return *this;
}
我也可以这样做:
TestClass& operator+=(TestClass& tc){
somePrivateValue += tc.somePrivateValue;
return *this;
}
排除第二个示例不需要为TestClass 调用复制构造函数的事实,还有哪些其他优点?
【问题讨论】:
-
第一个编译成功了,但它真的如你所愿吗?
标签: c++ operator-overloading return-value chaining