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

Viewed 80

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 trash values leftover in the memory.

1 Answers

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.

Related