是否可以初始化成员初始化列表中填充零的数组?

Is it possible to intialize array filled with zeros in member initializer list?

我需要定义一个 class 数组的空构造函数,它有一个参数包含参数 m 的值。它需要为数组中的m个元素分配内存并用零初始化它。

class Array{
protected:
 int* data;
 int m;

public:
 Array(int m);
};

是否可以在成员初始化器列表中用零初始化它,或者只能在构造函数的主体中使用 for 循环才能完成。我这样定义这个构造函数:

Array::Array(int m):m(m),data(new int[m]){}

但当然它充满了内存中剩余的随机垃圾值。

你可以这样写

Array::Array(int m): m( m ), data( new int[m]() )
{
}

Array::Array(int m): m( m ), data( new int[m]{} )
{
}

最好将数据成员 m 声明为类型 size_t 而不是类型 int.