' int i = 0' vs.' int i(0)'在' for'循环(分配vs初始化count变量)

时间:2015-01-02 16:45:46

标签: c++

我在教科书和论坛中看到很多代码,人们在for循环中使用赋值运算符而不是初始化运算符来开始重复。例如,

for ( int i = 0; i < 5; ++i )   // common 
for ( int i(0);  i < 5; ++i ) // uncommon 

我知道初始化变量比分配变量更快。为什么人们更喜欢前者呢?

3 个答案:

答案 0 :(得分:27)

int i = 0;int i(0);都在C ++中声明,定义和初始化int对象,其值为0。它们是严格等价的,两个循环结构也是如此。请注意,在C中,int i(0);不是允许的构造。

答案 1 :(得分:9)

您提到的两种初始化形式是: -

T t = u;     _1
T t(u);      _2

_1

这个可以涉及两个电话。一个是转换构造函数,另一个是复制构造函数。尽管大多数编译器都可以忽略复制构造。

_2

这只需要一次调用转换构造函数

所以,_2优于_1。至于内置类型,它不会产生太大的影响。

答案 2 :(得分:1)

你可以写得和:

int i(5);

int i{5};

int i=5;

所有这些都是初始化 - 而非分配。 *他们并没有什么不同。