ci ho messo anche io un pò per capire cosa rappresenti il costruttore di copia..
Con il costruttore di copia inizializzi un oggetto con i valori di un altro oggetto: nell'esempio inizializzi la classe i2 con i valori di i1..codice:class Intero { private: i; public: Intero(); Intero(const Intero & init); // costruttore di copia AddValue(); ResetValue(); }; Intero i1; i1.AddValue; Intero i2(i1);
Ovviamente deve essere l'oggetto i1 a copiarsi e ad offrire la sua copia per la costruzione di i2, altrimenti non avresti alcun modo per accedere alla parte privata di i1!!!
Ecco l'implementazione del costruttore di copia per questa classe semplice semplice:
codice:Intero :: Intero(const Intero &init) { i=init.i; }
init è l'oggetto da copiare : si passa per riferimento, ma col qualificatore const...
In realtà, sperando di essere stato chiaro, posso anche dirti che per la precedente classe è inutile il costruttore di copia: ma se non si fanno esempi semplici poi come si capiscono le cose??
Il costruttore di copia va fatto quando le variabili membro hanno un'estensione dinamica(per evitare la swallow-copy).
Se vuoi possiamo parlare anche di quest'altro aspetto!!!
A presto!!