为什么通过引用返回操作符链接?
我在SO上看了很多答案,而且股票短语是“通过引用返回以允许操作符链接”,但没有解释我不明白为什么我不能以其他方式做到。
例如,这似乎在我的系统上编译并且工作正常,链接工作:
TestClass operator+=(TestClass tc){
somePrivateValue += tc.somePrivateValue;
return *this;
}
我也可以这样做:
TestClass& operator+=(TestClass& tc){
somePrivateValue += tc.somePrivateValue;
return *this;
}
排除第二个例子不需要为TestClass
调用复制构造函数的事实还有什么其他优点?
答案 0 :(得分:2)
和链接工作
不,它没有。
TestClass a = some_value;
TestClass b = some_other_value;
(a += b) += b;
现在检查a
的值,但是已经完成了。它是否反映了b
两次递增?或者只有一次?