这是一个从℃的运动++入门第五版:为什么定义operator +来调用operator + =而不是其他方法更有效?
练习14.14:为什么你认为它是更有效地定义 运营商+来调用operator + =,而不是其他各地的方式(P.561)?
由于实现了operator+=
和operator+
:
Sales_data&
Sales_data::operator+=(const Sales_data &rhs)
{
units_sold += rhs.units_sold;
revenue += rhs.revenue;
return *this;
}
Sales_data
operator+(const Sales_data &lhs, const Sales_data &rhs)
{
Sales_data sum = lhs; // copy data members from lhs into sum
sum += rhs; // add rhs into sum
return sum;
}
在日此单元(14.3)电子端,作者给出一个提示,
类定义两个算术运算符和相关 化合物分配通常应该使用化合物分配到执行算术 操作者。
任何人都可以解释这个提示,使用事实/例子吗?
通常'operator +'返回一个新值,其中'operator + ='修改一个对象。毕竟,你不希望'a + b + c'中的'a'或'b'改变。这意味着'+ ='使用临时值。然而,如果你有'+ =',你可以简单地在你的'operator +'中通过值而不是参考来获取第一个参数,并且使你的函数非常小:'return left_hand_side + = right_hand_side;'。 – Zeta