Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No array allocated using new can have an initializer?

In the book I am reading at the moment (C++ Complete Reference from Herbert Schildt), it says that no array allocated using new can have an initializer.

Can't I initialize a dynamically allocated array using new? If not whats the reason for it?

like image 844
haris Avatar asked Jul 16 '11 12:07

haris


1 Answers

That's not quite true (you should almost certainly get yourself an alternative reference), you are allowed an empty initializer (()) which will value-initialize the array but yes, you can't initialize array elements individually when using array new. (See ISO/IEC 14882:2003 5.3.4 [expr.new] / 15)

E.g.

int* p = new int[5](); // array initialized to all zero
int* q = new int[5];   // array elements all have indeterminate value

There's no fundamental reason not to allow a more complicated initializer it's just that C++03 didn't have a grammar construct for it. In the next version of C++ you will be able to do something like this.

int* p = new int[5] {0, 1, 2, 3, 4};
like image 190
CB Bailey Avatar answered Sep 27 '22 20:09

CB Bailey