2017-03-16 3 views
0

に0に配列を初期化し、これはCで(this答えから取られた)はCでは、コンストラクタ

私の質問、同様の(または同じ)方法があるさ

int myArray[10] = { 0 }; // all elements 0 

を行うことによって、容易に行うことができ++私はコンストラクタで0に配列を初期化するために使用できますか?


私は初期化リストを使用して、上記実行する必要がありEDIT 1

はここ

struct aa 
{ 
    int i[10]; 

    aa() : i {0}{} 
}; 

答えて

0

のようなものすることができる別のアプローチ、それは

struct A 
{ 
    A() : a{} {} 
    enum { N = 10 }; 
    int a[N]; 
} a; 

それとも

struct A 
{ 
    A() : a{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } {} 
    enum { N = 10 }; 
    int a[N]; 
} a; 

for (int x : a.a) std::cout << x << ' '; 
std::cout << std::endl; 

を行うことができる方法の例であるタイプstd::arrayのオブジェクトを使用することです。例えば、

#include <array> 

//... 

struct A 
{ 
    A() 
    { 
     a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
    } 
    enum { N = 10 }; 
    std::array<int, N> a; 
} a; 

for (int x : a.a) std::cout << x << ' '; 
std::cout << std::endl; 
0

はい。別の名前(リストの初期化、またはこの場合は特別な場合は、集約初期化)を持ちますが、C++では同じ構文が適用されます。

ただし、メンバー初期化リストでは、別の構文:myArray{}を使用する必要があります。最初の要素を0に明示的に初期化することはデフォルトであるため、不要であることに注意してください。

関連する問題