Search code examples
c++oopconstructorinitializationnew-operator

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


Solution

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