2017-03-16 49 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是不必要的,因为这是默认值。