2013-10-06 17 views

Odpowiedz

11
int *a = new int; 

a wskazuje domyślnego zainicjowany obiektu (która niezainicjowanego obiekt w to przypadku tj wartość jest nieokreślone według normy).

int *a = new int(); 

a wskazuje wartości inicjalizacji przedmiotu (czyli zera zainicjowany obiektu w ten przypadku tj wartość jest zera według normy).

+3

C++ 11 § 8.5, p7, C++ 11 § 8.5, p5 i C++ 11 § 8.5, p6 dla inicjowania wartości, inicjalizacji zerowej i inicjowania domyślnego, odpowiednio, w przypadku PO jest zainteresowany (i bardzo w to wątpię). – WhozCraig

+4

Należy zauważyć, że testowanie nie ujawnia tej różnicy: w przeciwieństwie do automatycznego przechowywania, pamięć przydzielana dynamicznie często kończy się jako zero w prostych programach testowych i zawiera tylko "śmieci" w większych programach, gdy wcześniejsza pamięć zostanie ponownie wykorzystana. – hvd

5

Pierwszy wariant domyślnych inicjuje dynamicznie przydzielane int, który dla wbudowanych typów, takich jak int nie wykonuje inicjalizację.

Drugi wariant wartość inicjuje to, co dla int oznacza zerowej inicjalizacji, nadając mu wartość 0.

Powiązane problemy