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
,我认为它不是零初始化的。
std::array
根据 C++11 标准,正确的行为是什么?