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