自增运算符有两种形式:前缀自增运算和后缀自增运算,即我们通常所见的++i和i++两种形式。
就效率而言,一般来说前缀自增效率要高于后缀自增。
如下面代码所示:
Integer& Integer::operator++()
{
*this += 1;
return *this;
}
const Integer Integer::operator++(int)
{
Integer oldValue = *this;
++(*this);
return oldValue;
}
对于int类型的自增运算,从上述代码中,我们不难看出,后缀自增运算符使用了临时Integer对象,因此其效率会低于前缀自增运算。
注:一般情况下,二者效率没有差别,因为C语言编译器会自动使其最优化。
但是在C++中,当我们对某些类重载++运算符时,还是尽量使用前缀++运算符,其效率会高于后缀++.