对昨天的花括号初始化做一个补充,术语应该叫做聚合初始化,补充一个Stackoverflow上的高票答案
这里发生了什么叫做聚合初始化。以下是ISO规范第8.5.1节中的一个聚合的(缩写)定义:
聚合是一个没有用户声明构造函数的数组或类,没有私有或受保护的非静态数据成员,没有基类,也没有虚函数。
现在,使用{0}像这样初始化一个聚合,基本上是0整个事情的一个技巧。这是因为在使用聚合初始化时,您不必指定所有成员,并且规范要求所有未指定的成员都默认初始化,这意味着设置0为简单类型。
这里是规范的相关引用:
如果列表中的初始化器数量少于聚合中的成员数量,那么未明确初始化的每个成员应该被默认初始化
hyperlink:reference