当我读The C++ Programming Language 4th Edition,初始化变量中,笔者认为这是betther使用{}
比=
初始化变量: 但我看到有更多的人使用=
比{}
。
那么哪种方法是坚持不懈的好原则? =
或{}
?
Thx很多!使用大括号({})或等号(=)时初始化变量
回答
你选择哪一个取决于你自己的编码风格。最重要的是,一旦您决定使用哪种方法,请始终使用该方法。不要在两种方法之间切换。我个人使用(=)符号初始化变量,因为这是我看到的最常见的变量初始化方法。此外,C的新标准++(C++ 11以后,我相信)允许您初始化变量,像这样:
int variable(1)
但我劝你对这样,它不会在某些工作情况,正如你的书可能涵盖的那样。
本书建议使用初始值设定项的一个原因是它成为初始值。
当使用赋值'='时,在某些情况下,您最终会构造一个给它一个初始值的对象,然后代码将使用该类类型的赋值运算符来更改初始值,因此效率较低。这只是在某些情况下,取决于可用的构造函数等。
但是,在大多数情况下,现代编译器可以对其进行优化,使其成为同一事物。所以这不值得担心。
C++的一个问题是,无论事情有多简单,总有几种方法可以做同样的事情。
这已经不再是这种情况了:http://en.cppreference.com/w/cpp/language/copy_elision –
是的,你说得对,这就是为什么我说大多数现代编译器都将它优化为同样的东西。 –
让我们面对现实,有很多方法来做同样的事情的原因是语言的历史。 –
- 1. 大括号或相等的初始化
- 2. 使用大括号初始化集
- 3. 括号初始化与括号问题
- 4. 双大括号初始化 - 优点
- 5. 初始化列表后的大括号
- 6. 阵列初始化需要大括号
- 7. 类初始化的括号使用
- 8. 双括号初始化
- 9. 双括号初始化
- 10. 数组初始化需要大括号初始化列表
- 11. 大括号或相等的初始值设定在工会
- 12. 为什么建议统一初始化(使用大括号初始化)?
- 13. 信号量值大于初始化值
- 14. C++ 98大括号const标量初始化
- 15. 用括号内的初始化列表
- 16. as3符号变量尚未初始化
- 17. 初始化变量通过正常括号内
- 18. 使用sem_open初始化信号量
- 19. 使用双曲花括号初始化矢量<string>
- 20. 使用变量初始化等功能
- 21. 信号量初始化
- 22. 初始化映射时为什么不能省略大括号?
- 23. 使用围绕变量C++的花括号(大括号)
- 24. 使用大括号包装PHP变量
- 25. Ruby初始化方法何时使用括号
- 26. 我可以使用大括号初始化BCL不可变集合吗?
- 27. 在数组初始化中混合圆括号和方括号
- 28. Java双大括号初始化始终工作?
- 29. 双括号初始化类型混淆
- 30. 缺少括号围绕初始化
就像Bjarne说的那样,在前30年中,{}'选项不可用,所以旧代码使用'='。如果你使用这样的旧代码,你应该继续使用'='来保持一致。在新代码中,您可以选择使用'{}',并且有一些新功能*是必需的*。因此,一致性... –
你曾经使用过哪一个保持相同,并能够同时阅读 –
我们可以告诉你,这本书没有? – Galik