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.
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
.