閱讀777 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go C++編程規範之33用小類代替巨類
  下一篇:go C++11:使用 auto/decltype/result_of使代碼可讀易維護