[C++] Costruttore e inizializzatori?
- che differenza c'è fra un inizializzatore e un costruttore? il costruttore è una speciale funzione membro che inizializza un oggetto, cioè inizializza i suoi dati membro.. ma gli inizializzatori non fanno lo stesso?
Risposte
Ciao ZeTaMaster 
Da quello che ricordo al momento di quando studiavo il C++ (ma sono metodi presenti anche in un altro linguaggio) gli inizializzatori sono relativi a specifici attributi dell'oggetto a differenza del costruttore con cui si possono inizializzare in teoria anche tutti gli attributi dello stesso.

Da quello che ricordo al momento di quando studiavo il C++ (ma sono metodi presenti anche in un altro linguaggio) gli inizializzatori sono relativi a specifici attributi dell'oggetto a differenza del costruttore con cui si possono inizializzare in teoria anche tutti gli attributi dello stesso.
Per prima cosa, mentre i costruttori sono un costrutto vero e proprio del linguaggio, gli inizializzatori non lo sono. Sono delle semplici funzioni a cui viene dato lo scopo di inizializzare lo stato di un oggetto. Devono essere richiamati esplicitamente e possono essere richiamati più volte (per resettare lo stato di un oggetto per esempio).
I costruttori sono invece funzioni che vengono chiamate in un momento specifico della vita di un oggetto: la sua creazione. Il loro scopo è quello di inizializzare lo stato dell'oggetto. Al contrario degli inizializzatori non vengono praticamente mai chiamati direttamente (solo in alcune rare situazioni che per il momento non è il caso di prendere in considerazione). Nota che un costruttore potrebbe richiamare al suo interno un inizializzatore per fare il lavoro di inizializzazione. Potrebbe anzi essere una buona idea nei casi in cui siano presenti entrambi in modo da ridurre il codice duplicato.
I costruttori sono invece funzioni che vengono chiamate in un momento specifico della vita di un oggetto: la sua creazione. Il loro scopo è quello di inizializzare lo stato dell'oggetto. Al contrario degli inizializzatori non vengono praticamente mai chiamati direttamente (solo in alcune rare situazioni che per il momento non è il caso di prendere in considerazione). Nota che un costruttore potrebbe richiamare al suo interno un inizializzatore per fare il lavoro di inizializzazione. Potrebbe anzi essere una buona idea nei casi in cui siano presenti entrambi in modo da ridurre il codice duplicato.