【发布时间】:2015-01-02 16:45:45
【问题描述】:
我在教科书和论坛中看到很多代码,人们在 for 循环中使用赋值运算符而不是初始化运算符来开始重复。例如,
for ( int i = 0; i < 5; ++i ) // common
for ( int i(0); i < 5; ++i ) // uncommon
我知道初始化一个变量比分配它要快。为什么人们更喜欢前者而不是后者?
【问题讨论】:
-
“我知道初始化一个变量比分配它要快。” 嗯,什么?两种形式都是变量初始化,第一种不是赋值。
-
这不是赋值运算符。 :)
int i = 0是初始化(尽管使用了=),而i = 0是赋值。当你在同一行声明变量时,它是初始化,而不是赋值。 -
即将来到您附近的剧院:
for ( int i{0}; i < 5; ++i ) -
@CroCo 你混淆了两件事。您似乎认为
T u = v;与u = v;(或T u; u=v;)相同,但事实并非如此。你的问题的基本前提是错误的,因为你写的两个版本都是一样的,正如解释的那样。 -
@CroCo 另请注意,
image1(image2)这样的构造可能具有不同的含义,具体取决于上下文。这可以是函数调用,也可以是构造函数。您的示例看起来像函数调用和赋值运算符。而如果你把 type 放在前面(T image(image2);或T image = image2;),它们都将成为复制构造函数(假设两个图像的类型相同T当然)。
标签: c++