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 标准,正确的行为是什么?