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;
}

 

    因此,在调用代码时,要优先使用前缀形式,除非确实需要后缀形式返回的原值。前缀形式在语义上与后缀形式是等价的,输入工作量也相当,只是效率会略高一些,因为前缀形式少创建了一个对象。这不是不成熟的优化,这是在避免不成熟的劣化。

你可能感兴趣的:(C++,C++编程规范,前缀操作符,后缀操作符)