简体   繁体   中英

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

I need to define an empty constructor of class Array, which has one argument that contains value of parameter m. It needs to allocate memory for m elements in an array and initialize it with zeros.

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

public:
 Array(int m);
};

Is it possible to initialize it with zeros in member initializer list, or it can't be done except with a for loop in the body of this constructor. I defined this constructor like this:

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

but of course its filled with random thrash values leftover in the memory.

You may write either

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

or

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

It is better to declare the data member m as having the type size_t instead of the type int .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM