C++数组初始值设定项
C++ array initializer
在 C++ 14 标准草案中,有两个关于数组初始化的提及(我发现(:
第- 8.5.1 节 ([dcl.init.aggr]( 第 2 段:
"当聚合由初始值设定项列表初始化时 [...]">
- Section 8.5.2 ([dcl.init.string]( 第 1 段:
"可以初始化窄字符类型 (3.9.1(、char16_t数组、char32_t数组或wchar_t数组的数组 通过窄字符串文本、char16_t字符串文本、char32_t字符串文本或宽字符串文本, 分别,或用大括号括起来的适当类型的字符串文本 (2.13.5(。[...]">
因此,至少有两种类型的初始值设定项可用于数组:初始值设定项列表和字符串文本。
标准是否明确提到这是仅有的两个选项?
[dcl.init] 的第 17 段指定了数组所有可能的初始值设定项。
17
初始值设定项的语义如下。目标类型是要初始化的对象或引用的类型,源类型是初始值设定项表达式的类型。如果初始值设定项不是单个(可能用括号括起来(表达式,则不会定义源类型。
(17.1)
如果初始值设定项是(非括号(大括号初始化列表或 is =大括号初始化列表,则对象或引用是列表初始化的。
(17.2)
如果目标类型是引用类型,请参阅 [dcl.init.ref]。
(17.3)
如果目标类型是字符数组、char16_t数组、char32_t数组或wchar_t数组,并且初始值设定项是字符串文本,请参阅 [dcl.init.string]。
(17.4)
如果初始值设定项为 ((,则对象为值初始化。
(17.5)
否则,如果目标类型是数组,则程序格式不正确。
(17.2( 不适用于数组,因此选项包括:
- 默认初始化 ([dcl.init]/12(:
int x[3];
- 值初始化 ([dcl.init]/17.4(:
int* x = new int[3]();
- 列表初始化 ([dcl.init]/17.1(:
int x[] = {1, 2, 3};
或int x[] {1, 2, 3};
- 使用字符串文本 ([dcl.init]/17.3( 初始化:
char x[] = "text";
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '