mi potete fare un esempio di quando si usa il costruttore di copia( frammento di programma)? per esempio quando si inizializza un oggetto classe con un altro appartenente alla stessa classe
grazie in anticipo mad
mi potete fare un esempio di quando si usa il costruttore di copia( frammento di programma)? per esempio quando si inizializza un oggetto classe con un altro appartenente alla stessa classe
grazie in anticipo mad
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!!
Per liquidare un popolo si comincia con il privarli della memoria.Si distruggono i loro libri, la loro cultura, la loro storia. E qualcun’ altro scrive loro altri libri, li fornisce di un’altra cultura, inventa per loro un’altra storia. (Milan Kundera)