閱讀136 返回首頁    go 京東網上商城


C++編程規範之28:優先使用++和—的標準形式。優先調用前綴形式

摘要:

    如果定義++c,也要定義c++:遞增和遞減操作符很麻煩,因為它們都有前綴和後綴形式,而兩種形式語義又略有不同。定義operator ++和operator –時,應該模仿它們對應的內置操作符,如果不需要原值,應該優先調用前綴版本

    對於++和—而言,後綴形式返回的是原值,而前綴形式返回的是操作後的新值。應該用前綴形式實現後綴形式,標準形式是:

//前綴形式++
T&T::operator++()
{
         //執行遞增
         return *this;
}
//前綴形式--
T&T::operator--()
{
         //執行遞減
         return *this;
}


 

//後綴形式++
TT::operator(int)
{
         T old(*this);
         ++*this;
         return old;
}
//後綴形式--
TT::operator(int)
{
         T old(*this);
         --*this;
         return old;
}

 

    因此,在調用代碼時,要優先使用前綴形式,除非確實需要後綴形式返回的原值。前綴形式在語義上與後綴形式是等價的,輸入工作量也相當,隻是效率會略高一些,因為前綴形式少創建了一個對象。這不是不成熟的優化,這是在避免不成熟的劣化。

最後更新:2017-04-03 12:53:54

  上一篇:go C++編程規範之34:用組合代替繼承
  下一篇:go C++編程規範之25:正確選擇通過值、(智能)指針、或者引用傳遞參數