对于C ++ 11,* 39
比i = i + 1
快吗? ++i
++i
比类i++
快,但不适用于简单类型。 i = i + 1
和其他两个之间是否有类似的比较?
谢谢!
编辑1:我使用g ++,但我也很高兴知道这对其他编译器有何影响。
编辑2:此问题与I hear不同,因为它专门询问i = i + 1
,而不是仅讨论++i
和i++
之间的区别。
编辑3:(TonyD - 由QuantumFool编辑)问题的i = i + 1
方面是this one
答案 0 :(得分:4)
除了您使用的编译器外,它还取决于您使用的优化设置。如果您想知道,请将其反汇编以查看特定编译器+优化设置的编译结果。
但至少有一些事情是真实的:
i++
不会慢于i = i+1
++i
将不会慢于i++
。 ++i
。不是因为表现,而是为了建立一个好的做法,这样你就不需要在对象++
上进行双重思考。答案 1 :(得分:0)
class A{
private:
int i;
public:
A( int k =0): i(k){}
A operator++(){ // i++
A temp=*this; // need create a new object
i++;
return temp;
}
A & operator++(int){ // ++i
i++;
return *this;
}
};