C ++ 11初始化程序列表长度未在隐式构造函数中检查

安德烈斯

我发现,当带有默认构造函数的简单数据结构包含一个数组时,可以使用不同数量的参数调用默认构造函数,即:

struct LayerData
{
    uint32_t d[60];
};

可以通过以下方式初始化:

LayerData in({rand(),rand(),rand(),rand(),rand()});

并且它可以正确编译。

这是C ++ 11中的预期行为吗?隐式构造函数中没有大小的编译时检查?

心动过速

N3337 8.5.1 / 7

如果列表中的初始化子句少于聚合中的成员,则每个未显式初始化的成员应从一个空的初始化子列表(8.5.4)中初始化

struct S { int a; const char* b; int c; };
S ss = { 1, "asdf" };

用1初始化ss.a,用“ asdf”初始化ss.b,用int()形式的表达式的值ss.c初始化,即0

因此,在您的示例中,前5个元素用的rand()其他初始化int()0

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++中的初始化程序列表和类初始化。我有无参数构造函数,但仍必须使用初始化列表?

来自分类常见问题

C ++ 11初始化程序列表失败-但仅在长度为2的列表上

来自分类Dev

空的C ++ 11初始化程序列表导致容器中包含一个默认的构造对象

来自分类Dev

空的C ++ 11初始化程序列表导致容器中包含一个默认的构造对象

来自分类Dev

为什么显式声明的构造函数阻止使用C ++ 11初始化列表进行成员初始化?

来自分类Dev

为什么显式声明的构造函数阻止使用C ++ 11初始化列表进行成员初始化?

来自分类Dev

C ++使用其他参数获取构造函数的初始化程序列表

来自分类Dev

C ++初始化程序列表成员仍在调用默认构造函数?

来自分类Dev

C ++:使用RAII解决构造函数初始化程序列表依赖项

来自分类Dev

C ++使用其他参数获取构造函数的初始化程序列表

来自分类Dev

c ++ 11初始化程序列表作为数组

来自分类Dev

构造函数中的C ++初始化列表

来自分类Dev

C++在初始化类实例时隐式调用类成员的构造函数

来自分类Dev

C ++中的初始化程序列表性能?

来自分类Dev

错误C2797:成员初始化程序列表中的列表初始化

来自分类Dev

当parens初始化时,构造函数初始化列表中的C ++ 11大括号初始化为什么不起作用?

来自分类Dev

具有显式构造函数的不可复制类型的C ++ 11数组初始化

来自分类Dev

C ++ 11:带“ = {}”的类内初始化不适用于显式构造函数

来自分类Dev

c ++传递初始化程序列表作为参数来构造对象?

来自分类Dev

C ++ 11:列表初始化中的()或{}?

来自分类Dev

使用初始化列表时检查传递给构造函数的参数-C ++

来自分类Dev

使用向量/初始化程序列表的任何类型的C ++ 11动态多维数组

来自分类Dev

具有括号括起来的初始化程序列表的C ++ 11 g ++

来自分类Dev

具有括号括起来的初始化程序列表的C ++ 11 g ++

来自分类Dev

构造函数中的C ++ 11隐式实例

来自分类Dev

c2797成员初始化程序列表中的列表初始化或未实现的非静态数据成员初始化程序

来自分类Dev

C ++构造函数初始化列表中的C struct副本

来自分类Dev

复杂分配的C ++构造函数初始化器列表

来自分类Dev

C ++:具有初始化列表的默认构造函数

Related 相关文章

  1. 1

    C ++中的初始化程序列表和类初始化。我有无参数构造函数,但仍必须使用初始化列表?

  2. 2

    C ++ 11初始化程序列表失败-但仅在长度为2的列表上

  3. 3

    空的C ++ 11初始化程序列表导致容器中包含一个默认的构造对象

  4. 4

    空的C ++ 11初始化程序列表导致容器中包含一个默认的构造对象

  5. 5

    为什么显式声明的构造函数阻止使用C ++ 11初始化列表进行成员初始化?

  6. 6

    为什么显式声明的构造函数阻止使用C ++ 11初始化列表进行成员初始化?

  7. 7

    C ++使用其他参数获取构造函数的初始化程序列表

  8. 8

    C ++初始化程序列表成员仍在调用默认构造函数?

  9. 9

    C ++:使用RAII解决构造函数初始化程序列表依赖项

  10. 10

    C ++使用其他参数获取构造函数的初始化程序列表

  11. 11

    c ++ 11初始化程序列表作为数组

  12. 12

    构造函数中的C ++初始化列表

  13. 13

    C++在初始化类实例时隐式调用类成员的构造函数

  14. 14

    C ++中的初始化程序列表性能?

  15. 15

    错误C2797:成员初始化程序列表中的列表初始化

  16. 16

    当parens初始化时,构造函数初始化列表中的C ++ 11大括号初始化为什么不起作用?

  17. 17

    具有显式构造函数的不可复制类型的C ++ 11数组初始化

  18. 18

    C ++ 11:带“ = {}”的类内初始化不适用于显式构造函数

  19. 19

    c ++传递初始化程序列表作为参数来构造对象?

  20. 20

    C ++ 11:列表初始化中的()或{}?

  21. 21

    使用初始化列表时检查传递给构造函数的参数-C ++

  22. 22

    使用向量/初始化程序列表的任何类型的C ++ 11动态多维数组

  23. 23

    具有括号括起来的初始化程序列表的C ++ 11 g ++

  24. 24

    具有括号括起来的初始化程序列表的C ++ 11 g ++

  25. 25

    构造函数中的C ++ 11隐式实例

  26. 26

    c2797成员初始化程序列表中的列表初始化或未实现的非静态数据成员初始化程序

  27. 27

    C ++构造函数初始化列表中的C struct副本

  28. 28

    复杂分配的C ++构造函数初始化器列表

  29. 29

    C ++:具有初始化列表的默认构造函数

热门标签

归档