這是一個從℃的運動++入門第五版:爲什麼定義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