2017-12-18 201 views
0

当我读The C++ Programming Language 4th Edition,初始化变量中,笔者认为这是betther使用{}=初始化变量: variable initialization 但我看到有更多的人使用={}
那么哪种方法是坚持不懈的好原则? ={}
Thx很多!使用大括号({})或等号(=)时初始化变量

+0

就像Bjarne说的那样,在前30年中,{}'选项不可用,所以旧代码使用'='。如果你使用这样的旧代码,你应该继续使用'='来保持一致。在新代码中,您可以选择使用'{}',并且有一些新功能*是必需的*。因此,一致性... –

+0

你曾经使用过哪一个保持相同,并能够同时阅读 –

+0

我们可以告诉你,这本书没有? – Galik

回答

0

你选择哪一个取决于你自己的编码风格。最重要的是,一旦您决定使用哪种方法,请始终使用该方法。不要在两种方法之间切换。我个人使用(=)符号初始化变量,因为这是我看到的最常见的变量初始化方法。此外,C的新标准++(C++ 11以后,我相信)允许您初始化变量,像这样:

int variable(1) 

但我劝你对这样,它不会在某些工作情况,正如你的书可能涵盖的那样。

-3

本书建议使用初始值设定项的一个原因是它成为初始值。

当使用赋值'='时,在某些情况下,您最终会构造一个给它一个初始值的对象,然后代码将使用该类类型的赋值运算符来更改初始值,因此效率较低。这只是在某些情况下,取决于可用的构造函数等。

但是,在大多数情况下,现代编译器可以对其进行优化,使其成为同一事物。所以这不值得担心。

C++的一个问题是,无论事情有多简单,总有几种方法可以做同样的事情。

+0

这已经不再是这种情况了:http://en.cppreference.com/w/cpp/language/copy_elision –

+0

是的,你说得对,这就是为什么我说大多数现代编译器都将它优化为同样的东西。 –

+0

让我们面对现实,有很多方法来做同样的事情的原因是语言的历史。 –