Gdy używam new [], aby utworzyć tablicę z moich klas:Czy nowy [] wywołuje domyślny konstruktor w C++?
int count = 10;
A *arr = new A[count];
widzę, że wywołuje domyślny konstruktor A
count
razy. W rezultacie arr
ma count
zainicjalizowane obiekty typu A
. Ale jeśli mogę użyć tego samego skonstruować tablicę int:
int *arr2 = new int[count];
nie jest zainicjowany. Wszystkie wartości są podobne do -842150451
, chociaż domyślny konstruktor int przypisuje jego wartość do 0
.
Dlaczego tak różne zachowanie? Czy domyślny konstruktor nie jest wywoływany tylko dla typów wbudowanych?
Możliwy duplikat [Jak mogę dokonać \ 'nowy \ [\] \' default-zainicjować tablicę prymitywnych typów?] (Https : //stackoverflow.com/questions/2468203/how-can-i-make-new-default-initialize-tray-of-primitive-types) – Suma