经常看到++i这种形式的循环。不是很明白,今天又在c++编程规范上看到作者强调优先用前置++的形式。
网上查了下大部分人认为这两种形式是没区别的,其实是有的。
i++会生出一个临时变量来保存i的值。当然如果i是int这种内置类型的话,两种方式效率差别可能不是很明显,但如果i是一个自定义类型的话,效果可能就大了。下面的重载运算符很好的进行了说明。
const T T::operator++(int)
{
T old( *this );//调用拷贝构造函数
++*this;//自加
return old;//返回自加前的对象
}
所以一般情况下还是优先写成前置++的形式吧。