Sì, per i tipi integrati int x = 1;
e int x(1);
sono gli stessi.
Quando si costruiscono oggetti di tipo classe, le due diverse sintassi di inizializzazione sono leggermente differenti.
Obj x(y);
Questo è inizializzazione diretta e istruisce il compilatore per la ricerca di un costruttore inequivocabile che prende y
, o qualcosa che y
può essere convertito in modo implicito, e usa questo costruttore per inizializzare x.
Obj x = y;
Questo è copia inizializzazione e al compilatore di creare una temporanea Obj
convertendo y
e usa costruttore di copia Obj
s' per inizializzare x
.
Copy inizializzazione del equivale a inizializzazione diretta quando il tipo di y
è lo stesso del tipo di x
.
Per copia inietta, poiché il temporaneo utilizzato è il risultato di una conversione implicita, i costruttori contrassegnati con explicit
non vengono considerati. Il costruttore di copie per il tipo costruito deve essere accessibile ma la copia stessa può essere eliminata dal compilatore come un'opzione di ottimizzazione.
fonte
2009-10-03 06:38:38
Dupe: http://stackoverflow.com/questions/1051379/is-there-a-difference-in-c-between-copy-initialization-and-assignment-initializ –
Non proprio la stessa cosa. Questa domanda sembra essere specificamente sull'inizializzazione dei POD. – Boojum