相关疑难解决方法(0)

什么是聚合和POD以及它们如何/为何特殊?

常见问题解答涉及聚合和POD,并涵盖以下材料:

  • 什么是聚合
  • 什么是POD(普通旧数据)?
  • 它们有什么关系?
  • 它们如何以及为何特别?
  • C++ 11有什么变化?

c++ aggregate standard-layout c++11 c++17

525
推荐指数
6
解决办法
13万
查看次数

为什么默认成员值禁止使用括号列表初始化?

考虑这个结构:

struct S { int index; };
Run Code Online (Sandbox Code Playgroud)

它可以使用braced-list进行初始化,如下所示:

S s{10}; //s::index becomes 10
Run Code Online (Sandbox Code Playgroud)

但是,如果我为成员指定默认值:

struct S { int index = -1; };
Run Code Online (Sandbox Code Playgroud)

支撑列表初始化给我一个无法转换initializer list为的编译器错误 S.我怀疑它可能与为结构生成的默认构造函数有关,因为我已经指定了默认值.但为什么初始化列表不能覆盖呢?

我想要这个的原因是我想要用值初始化struct或者将它默认为某些"无效"默认值.由于这种限制,我必须自己指定构造函数或每次都显式初始化"无效"默认值.

我正在使用VS2015编译器.

c++ struct visual-studio-2015

2
推荐指数
1
解决办法
126
查看次数