Нет, вы не можете этого сделать.
Я думаю, что C ++ не позволяет этого, потому что разрешение такой вещи не добавляет никакой приятной для обладания функции в язык.Другими словами, какой будет смысл динамического массива, если вы используете статический инициализатор для его инициализации?
Смысл динамического массива - создать массивразмером N
, который известен во время выполнения, в зависимости от фактической потребности.То есть код
int *p = new int[2];
имеет для меня меньшее значение, чем следующий:
int *p = new int[N]; //N is known at runtime
Если это так, то как вы можете указать количество элементов в * 1020?* static инициализатор, потому что N
неизвестен до времени выполнения?
Допустим, вам разрешено написать следующее:
int *p = new int[2] {10,20}; //pretend this!
Но какое большое преимущество вы получаетенаписав это?Ничего такого.Его почти такой же, как:
int a[] = {10,20};
Реальным преимуществом будет то, когда вам разрешат писать это для массивов N
элементов.Но тогда проблема заключается в следующем:
int *p = new int[N] {10,20, ... /*Oops, no idea how far we can go? N is not known!*/ };