我在教科书和论坛中看到很多代码,人们在for
循环中使用赋值运算符而不是初始化运算符来开始重复。例如,
for ( int i = 0; i < 5; ++i ) // common
for ( int i(0); i < 5; ++i ) // uncommon
我知道初始化变量比分配变量更快。为什么人们更喜欢前者呢?
答案 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;
所有这些都是初始化 - 而非分配。 *他们并没有什么不同。