代码之家  ›  专栏  ›  技术社区  ›  user42768

C++数组初始值设定项

  •  1
  • user42768  · 技术社区  · 8 年前

    在C++14标准中 draft

    1. 第8.5.2节([dcl初始字符串])第1段:

    “可以初始化窄字符类型(3.9.1)、char16\u t array、char32\u t array或wchar\u t array的数组 或者通过大括号(2.13.5)中包含的适当类型的字符串文字。[...]"

    因此,至少有两种类型的初始值设定项可用于数组:初始值设定项列表和字符串文字。

    标准是否明确提到这些是 只有

    1 回复  |  直到 8 年前
        1
  •  1
  •   Community Mohan Dere    5 年前

    Paragraph 17 [dcl.init] 指定数组的所有可能的初始值设定项。

    17 初始值设定项的语义如下。目标类型是正在初始化的对象或引用的类型,源类型是初始化器表达式的类型。如果初始值设定项不是单个(可能带括号)表达式,则不定义源类型。

    (17.1) 如果初始值设定项是a(无括号) 带括号的初始化列表 带括号的初始化列表

    (17.2)

    (17.3)

    (17.4) 如果初始值设定项为(),则对象为值初始化。

    (17.5) 否则,如果目标类型是数组,则程序格式错误。

    (17.2)不适用于阵列,因此选项为:

    1. [dcl.init]/12 ): int x[3];
    2. 值初始化( [dcl.init]/17.4 ): int* x = new int[3]();
    3. [dcl.init]/17.1 ): int x[] = {1, 2, 3}; int x[] {1, 2, 3};
    4. [dcl.init]/17.3 ): char x[] = "text";
    推荐文章