2017-03-16 55 views
0

初始化數組0在C這可以容易地通過這樣做在構造

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

進行(從this答案截取)

我的問題是,是否有用C相似(或相同)的方式++我可以用它在構造函數中初始化數組爲0?


編輯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++具有不同的名稱(列表初始化,或者在這種情況下是特殊情況,聚合初始化),但C++仍然適用相同的語法。

但是,在成員初始化列表中,您必須使用不同的語法:myArray{}。請注意,顯式初始化第一個元素爲0是不必要的,因爲這是默認值。