C++編程規範之27:使用算術操作符和賦值操作符的標準形式
摘要:
如果要定義a+b,也應該定義a+=b:在定義二元算術操作符時,也應該提供操作符的賦值形式,並且應該盡量減少重複,提高效率。
一般而言,對於某個二元操作符@(可能是+、-、*等),應該定義其賦值形式,使用a@=b和a=a@b具有相同的含義(隻不過第一種形式可能更高效,它隻計算一次a)。實現這一目標的標準方法是用@=來定義@,如下所示:
T&T::operator@=(const T&) { //......具體的實現代碼...... return *this; } Toperator@(const T& lhs, const T& rhs) { T temp(lhs); return temp @ = rhs; }
這兩個函數是協同工作的。賦值形式完成實際工作並返回其左參數。非賦值形式從lhs創建一個臨時變量,然後調用賦值形式修改該變量,並返回它。
最後更新:2017-04-03 12:53:51