正如我在书籍和网络中所读到的,在 C++ 中,我们可以使用这些原型重载“加号”或“减号”运算符(作为 class Money
的成员函数):
const Money operator +(const Money& m2) const;
const Money operator -(const Money& m2) const;
对于赋值运算符:
const Money& operator =(const Money& m2);
为什么在赋值运算符重载中而不是在加号和减号运算符中使用对 Money 对象的引用作为返回值?
原文由 MinimalTech 发布,翻译遵循 CC BY-SA 4.0 许可协议
从赋值返回引用允许链接:
(如果运算符返回新值的副本,这也可以(在大多数情况下)起作用,但这通常效率较低。)
我们不能从算术运算中返回引用,因为它们会产生一个新值。返回新值的唯一(明智的)方法是按值返回。
正如您的示例所做的那样,返回一个常量值会阻止移动语义,所以不要这样做。