在构造函数中将数组初始化为0 [重复]

Posted

技术标签:

【中文标题】在构造函数中将数组初始化为0 [重复]【英文标题】:initialize array to 0 in constructor [duplicate] 【发布时间】:2017-03-16 10:27:37 【问题描述】:

在 C 中,这可以通过以下方式轻松完成

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

(取自this答案)

我的问题是,在 C++ 中是否有类似(或相同)的方法可以用来在构造函数中将数组初始化为 0?


编辑 1

我需要使用初始化列表进行上述操作。

可能是这样的

struct aa

    int i[10];

    aa() : i 0
;

【问题讨论】:

【参考方案1】:

是的。相同的语法适用于 C++,尽管它有不同的名称(列表初始化,或者在这种情况下,它的特殊情况是聚合初始化)。

但是,在成员初始化列表中,您必须使用不同的语法:myArray。请注意,不需要将第一个元素显式初始化为 0,因为这是默认设置。

【讨论】:

【参考方案2】:

这是一个例子

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 ++中将多维数组初始化为类成员

在 gcc 中将二维数组初始化为 0 时的值不正确

在Python中将列表初始化为已知数量的元素[重复]

为啥只有数组的第一个元素被初始化为-1?而其余的都是0 [重复]

数据初始化

Java - 在构造函数中初始化数组[重复]