В общем случае массив не будет инициализирован. Однако имейте в виду, что начальное значение объекта типа класса зависит не только от того, как определен сам класс (конструктор и т. Д.), Но также может зависеть от initializer , используемого при создании объекта.
Таким образом, в некоторых случаях ответ на ваш вопрос может зависеть от инициализатора , который вы предоставляете при создании объекта, и от версии языка C ++, которую реализует ваш компилятор.
Если вы не укажете инициализатор, массив будет содержать мусор.
A* pa = new A;
// Garbage in the array
A a;
// Garbage in the array
Если указать инициализатор ()
, в C ++ 98 массив все равно будет содержать мусор. Однако в C ++ 03 объект будет инициализирован значением, а массив будет содержать нулевые указатели
A* pa = new A();
// Null-pointers in the array in C++03, still garbage in C++98
A a = A();
// Null-pointers in the array in C++03, still garbage in C++98
Кроме того, объекты со статической продолжительностью хранения всегда инициализируются нулями, прежде чем произойдет любая другая инициализация. Итак, если вы определите объект класса A
со статической продолжительностью хранения, массив будет изначально содержать нулевые указатели.