Qual è la differenza tra le seguenti 2 inizializzazioni?Inizializzazione della classe C++ con e senza parentesi
class Pod {
public:
int a, b;
};
Pod *p1 = new Pod;
Pod *p2 = new Pod();
Qual è la differenza tra le seguenti 2 inizializzazioni?Inizializzazione della classe C++ con e senza parentesi
class Pod {
public:
int a, b;
};
Pod *p1 = new Pod;
Pod *p2 = new Pod();
Nel primo caso l'oggetto viene lasciato inizializzato, mentre nel secondo caso l'oggetto è sempre garantito valore inizializzato, che in questo caso come tipo è POD significa zero inizializzata
Anche se la differenza è essenzialmente inesistente nel caso di 'int', nel primo caso i membri sono inizializzati di default piuttosto che non inizializzati. –
@JerryCoffin: Sì, avrei dovuto essere più chiaro, quella parte è anche dovuta al fatto che si tratta di un POD, per il quale * l'inizializzazione predefinita * indica che l'oggetto è * non inizializzato * –
@ DavidRodríguez-dribeas: ... ma in C++ 11, non è limitato ai tipi POD (IIRC, dovrebbe applicarsi alla categoria un po 'più ampia di tutti i tipi banalmente copiabili). –
Come ha detto JamesMcLaughlin, nessuna differenza, inoltre, non è limitata ai POD. – MFH
@ DavidRodríguez-dribeas Come mai? –
@JamesMcLaughlin: leggi la sezione 8.5 nello standard :) –