1.对于i是内置类型,效率无差别,编译器会自动优化
2.对于i为非内置类型,效率会存在不同,主要体现在其功能作用不同,++i是将i值自增后返回,而i++是返回(i+1)的临时变量,同时将i自增。
可以猜想其重载操作符实现逻辑与下面代码类似:
className className::
operator
++()
{
++m_iValue;
//位置成员标识自增
return
*
this
;
}
className className::
operator
++(
int
)
{
className clObj;
clObj.value=value;
m_iValue++;
return
clObj;
}
从上面代码可以看出,后置++多了一个保存临时对象的操作,因此效率自然低一些。
因此:
对于内置对象都可以
对于非内置对象,最好采用++i格式