struct MyClass
{
std::array<int, 10> stdArr;
MyClass() : stdArr()
{}
};
MyClass c;
问题:
c.stdArr
是否进行了零初始化?- 如果是,为什么?
我的自相矛盾的答案:
它进行了零初始化:
std::array
希望像c数组一样行事。 如果在上面的示例中stdArr
是一个c数组,则在初始化列表中的stdArr()
将进行零初始化。我预计在初始化列表中编写member()
会初始化对象。它没有进行零初始化:
std::array
通常有一个成员,在我的情况下为int[10] _Elems;
- 通常不会对基本类型和基本类型的数组(如
int[N]
)进行默认初始化。 std::array
是聚合类型,这意味着它是默认构造的。- 因为没有自定义构造函数来初始化
_Elems
,所以我认为它没有进行零初始化。
根据C++11标准,std::array
的正确行为是什么?
std::array
,即元素被零初始化。 - user529758{...}
语法进行初始化。但这在这里并不相关,因为没有聚合初始化。 - user743382