什么时候应该使用括号()与Initializer {}语法来初始化C ++ 11中的对象?

阿杰亚达夫

更新

我已通过链接(例如何时使用括号括起的初始化程序?)在何时应使用{}括号初始化进行了了解,但未提供有关何时应使用括号( )对初始化{ }语法来初始化C ++ 11中对象的信息。 / 14?什么标准的做法,建议使用(){}

在极少数情况下,例如vector<int> v(10,20);auto v = vector<int>(10,20);,结果是std::vector包含10个元素的。如果我们使用花括号,则结果为std::vector2个元素。但这取决于调用者的用例:他/她想分配10个元素还是2个元素的向量?

特里斯坦·布林德尔

斯科特·迈耶斯(Scott Meyers)在他出色的“有效的现代C ++”的项目7中解决了这个问题。他介绍了两种语法的优缺点,并得出结论

尚无共识,认为任何一种方法都比另一种更好,因此我的建议是选择一种方法并始终如一地应用。

另一方面,《 C ++核心准则》建议您首选使用初始化器语法,因此也许是更好的默认设置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C++11 大括号/聚合初始化。什么时候使用?

什么时候在C ++中调用静态初始化

在C ++ 11中,什么时候应该显式使用std :: decay?

什么时候应该在C ++ 11中使用constexpr功能?

我可以使用C ++ 11大括号初始化语法来避免为简单的聚合声明琐碎的构造函数吗?

在 C++20 中什么时候应该使用 `iterator_traits<I>::value_type`,什么时候应该使用 `iter_value_t`?

对象初始化程序语法混乱。在初始化器中使用括号?

Django 模型对象什么时候初始化?

使用 C# 中的对象初始化语法将内部对象的成员设置为外部对象

什么时候在Java中初始化数组?

什么时候在Python中初始化类变量?

什么时候应该在C ++中对函子使用函数?

C#对象/列表初始化器语法的优点是什么?

C#| 使用另一个实例的属性初始化新对象的语法

在C ++ 11中对结构数组进行括号初始化

为什么C ++中的成员初始化需要新的语法?

什么时候允许初始化initializer_list?

通过接口使用对象初始化器语法

java中什么时候应该使用return方法,什么时候应该使用void方法

有没有办法使用变量或用户输入来初始化 c# 中的对象

c ++ 11:使用显式的initializer_list对象初始化映射

什么时候应该初始化Golang变量

数组中的括号初始化C ++

什么时候应该添加“&”,什么时候不应该使用C语言调用函数?

什么时候应该初始化类-在加载时或首次使用时?

什么时候应该使用未初始化的静态最终变量?

在C#中,我应该使用string.Empty还是String.Empty或“”来初始化字符串?

什么时候应该在Rust绑定中为C库使用`&mut self`和`&self`?

为什么可以使用大括号初始化对aggreggate结构进行大括号初始化,但不能使用与大括号初始化中相同的参数列表来放置它?