当我正在阅读The C++ Programming Language 4th Edition时,为了初始化一个变量,作者说使用{}
而不是=
来初始化一个变量:
但我发现有更多人使用=
而不是{}
那么哪种方法是坚持的好原则? =
或{}
?
很多!
答案 0 :(得分:1)
您选择哪一个取决于您自己的编码风格。最重要的是,一旦确定使用哪种方法,就要始终如一地使用该方法。不要在两种方法之间切换。我个人使用(=)符号来初始化变量,因为这是我看到的最常见的变量初始化方法。此外,更新的C ++标准(我相信C ++ 11及更高版本)允许您初始化变量,如下所示:
int variable(1)
但是我会建议你不要这样做,它在某些情况下不起作用,正如你的书可能涵盖的那样。
答案 1 :(得分:-1)
在其他人提出这个愚蠢的想法之前 T a = b(其中 b 是 T 的类型)以赋值运算符调用结束,
让我们澄清一下,在 C++ 和任何面向对象的语言中,赋值运算符不能用于尚未创建的对象。 这是初始化,这一直是复制构造函数的调用,与C++版本无关。
在这种情况下,'=' 只是一个语法糖。
请参阅说明部分中的 Reference:
<块引用>每当一个对象从另一个相同类型的对象初始化(通过直接初始化或复制初始化)时,都会调用复制构造函数(除非重载决议选择了更好的匹配或调用被省略),其中包括 初始化:T a = b;或 T a(b);,其中 b 是 T 类型;
答案 2 :(得分:-3)
本书建议使用初始化程序的一个原因是它成为初始值。
使用赋值'='时,在某些情况下,您最终会构造一个给它初始值的对象,然后代码使用类类型的赋值运算符来更改初始值,因此效率较低。这仅在某些情况下,取决于可用的构造函数等。
但是,在大多数情况下,现代编译器可以对其进行优化以使其成为同一个东西。所以不值得担心。
C ++的一个问题是,无论事情多么简单,总有几种方法可以做同样的事情。