【问题标题】:Is it possible to intialize array filled with zeros in member initializer list?是否可以在成员初始化器列表中初始化用零填充的数组?
【发布时间】:2022-01-09 19:32:17
【问题描述】:

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

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

public:
 Array(int m);
};

是否可以在成员初始化器列表中使用零来初始化它,或者除了在此构造函数的主体中使用 for 循环之外无法完成。我这样定义了这个构造函数:

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

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

【问题讨论】:

    标签: c++ oop constructor initialization new-operator


    【解决方案1】:

    你也可以写

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

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

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

    【讨论】:

    猜你喜欢
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 2015-09-25
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多