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

Time:01-10

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.

CodePudding user response:

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.

  •  Tags:  
  • Related