struct MyClass
{
std::array<int, 10> stdArr;
MyClass() : stdArr()
{}
};
MyClass c;
問題:是std :: array <int, 10>作爲類成員零初始化?
- 是
c.stdArr
零初始化? - 如果是 - 爲什麼?
我自己的矛盾的答案:
它是零初始化:
std::array
要像一個C-陣列。 如果在我上面的示例中stdArr
是一個c數組,它將在初始化列表中由stdArr()
進行零初始化。我期望在初始化列表中寫入member()
可以初始化對象。它不是零初始化:
std::array
通常只有一個成員是在我的情況int[10] _Elems;
- 通常基本類型和基本類型,如
int[N]
的陣列不是默認初始化。 std::array
是一個聚合類型,暗示它是默認構造的。- 因爲沒有自定義構造函數初始化
_Elems
,我認爲它不是零初始化的。
什麼是根據C++ 11標準的std::array
正確的行爲?
[CPP參考說](http://en.cppreference.com/w/cpp/container/array),該集合初始化工作於'性病:: array',i。即元素**是**零初始化的。 – 2013-06-25 12:33:03
@ H2CO3聚集初始化的工作原理意味着它可以使用'{...}'語法進行初始化。這在這裏沒有關係,沒有聚合初始化。 – hvd
我鏈接了另一個完全解釋何時默認初始化以及何時零初始化的問題。 –