2013-10-06 14 views

Antwort

11
int *a = new int; 

a zeigt auf default-initialisiert Objekt (das uninitialized Objekt in dies Fall heißt der Wert ist unbestimmt gemäß dem Standard).

int *a = new int(); 

a zeigt auf Wert initialisierten Objekt (das in dieses Fall Objekt Null initialisiert ist, d.h der Wert Null gemäß der Norm ist).

+3

C++ 11 § 8.5, p7, C++ 11 § 8.5, p5 und C++ 11 § 8.5, p6 für Wertinitialisierung, Nullinitialisierung bzw. Standardinitialisierung, falls das OP ist interessiert (und ich bezweifle es sehr). – WhozCraig

+4

Beachten Sie, dass Tests diesen Unterschied nicht aufdecken können: Anders als bei der automatischen Speicherung endet der dynamisch zugewiesene Speicher in einfachen Testprogrammen oft bei Null und enthält nur "Müll" in größeren Programmen, wenn früherer Speicher wiederverwendet wird. – hvd

5

der ersten Variante default-Initialisiert die zugeordnete dynamisch int, das für integrierte Typen wie int keine Initialisierung durchführt.

Die zweite Variante es Wert initialisiert, der für int bedeutet Null-Initialisierung es 0 Wert ergibt.

Verwandte Themen