类成员初始化列表中的聚合成员是否属于聚合初始化?
问题解答
核心结论
示例代码中对类成员arr(数组,属于聚合类型)的初始化操作,属于聚合初始化。
依据说明
根据C++标准定义,聚合初始化的适用场景包含在类构造函数的成员初始化列表中,对聚合类型成员使用花括号初始化列表进行初始化的情况。
示例里的arr{ a, b }完全符合聚合初始化的语法:
arr是数组类型,属于典型的聚合类型;- 使用
{a, b}这种花括号列表来初始化其元素,匹配数组的元素数量,满足聚合初始化的要求。
需要明确区分的是:类S本身的初始化(S s{1, 2})是调用了模板构造函数,属于构造函数初始化,并非聚合初始化,但这和成员arr的初始化类型无关。
内容的提问来源于stack exchange,提问作者mentalmushroom
相关产品推荐
相关产品推荐

