Un dichiarata variabile può essere Zero Initialized, Valore Initialized o predefinito Initialized.
Nel tuo esempio:
Info *p = new Info(); <------- Value Initialization
Info *p = new Info; <------- Default Initialization
Il C++ 03 standard 8,5/5 definisce giustamente ogni:
Per zero inizializzare un oggetto di tipo T significa:
- se T è un tipo scalare (3.9), l'oggetto è impostato sul valore di 0 (zero) convertito in T;
- se T è un tipo di classe non di unione, ogni membro di dati non statici e ogni sottoclasse di classe base
viene inizializzato a zero;
- se T è un tipo di unione, il primo membro dati denominato dell'oggetto viene inizializzato a zero;
- se T è un tipo di matrice, ogni elemento è inizializzato a zero;
- se T è un tipo di riferimento, non viene eseguita alcuna inizializzazione.
Per default-inizializzare un oggetto di tipo T significa:
- se T è un non-POD tipo di classe (clausola 9), il costruttore predefinito per T è chiamato (e l'inizializzazione è mal formata se T non ha un costruttore predefinito accessibile);
- se T è un tipo di matrice, ogni elemento viene inizializzato di default;
- in caso contrario, l'oggetto viene inizializzato a zero.
Per valore-inizializzare un oggetto di tipo T significa:
- se T è un tipo di classe (clausola 9) con un costruttore dall'utente dichiarato (12.1), quindi viene chiamato il costruttore predefinito per T (e l'inizializzazione è mal formata se T non ha un costruttore predefinito accessibile da );
- se T è un tipo di classe non di unione senza un costruttore dichiarato dall'utente, quindi ogni membro di dati non base statico di T è inizializzato a valore;
- se T è un tipo di matrice, ogni elemento viene inizializzato in base al valore;
- altrimenti, l'oggetto è inizializzato a zero
fonte
2012-01-14 07:19:16
possibile duplicato di [Che cosa significano le seguenti frasi in C++: inizializzazione a zero, default e valore?] (Http://stackoverflow.com/questions/1613341 /), [Differenza tra default-initialize e value-initialize in C++ 03?] (Http://stackoverflow.com/questions/7084831/). – outis