私は任意の値に対して少なくとも1人のメンバーを初期化する際に他の全てをゼロに初期化されていることを理解し、私がしなければゼロに、アレイのすべてのメンバーを初期化したい、またはnullptr
C++でC配列を初期化するこれらの方法に違いはありますか?
struct Window{ int a;};
int main()
{
Window* list[4] = { 0, 0, 0, 0 };
Window* list2[4] = {0};
Window* list3[4] = {};
Window* list4[4]{ 0, 0, 0, 0 };
Window* list5[4]{0};
Window* list6[4]{};
}
:
int list[4] = { 6 };
最初のメンバーは6
になり、残りはすべてゼロで初期化されます。しかし私は、と混乱しています:
int list[4]{0};
と
int list[4]{};
私は初期化をデフォルトに対立するものとしてのない宣言は等号の直後に空波括弧は、ゼロ初期化を何と呼ばれていますされていることを前提としていますが、
int list[4]{0}
もそうですね。これは舞台裏で
std::initializer_list
を含むかどうか?私はこれらがPOD以外のタイプにしか使われないと思ったので、
std::initializer_list
はここで使用されていませんか?
これらはすべて[集約初期化](http://en.cppreference.com/w/cpp/language/aggregate_initialization)の異なる形式で、最終的な効果は同じです。 – Praetorian
私は[this site](http://en.cppreference.com/w/cpp/language/value_initialization)を愛しています。[initializers](http://en.cppreference.com/w/cpp/言語/リスト初期化)。 – lakeweb
@lakewebありがとう。ああ、C++ 03とC++ 11の違いは、非常に微妙なことです。 – Zebrafish