Ciao ... Il costruttore di copia viene richiamato quando un oggetto viene CREATO come copia di un altro oggetto.
L'operatore d' assegnazione, invece, viene richiamato quando un oggetto viene MODIFICATO (quindi dopo la sua definizione) come copia di un' altro oggetto.
Siccome o3 viene definito/creato come copia di o1, è il costruttore di copia ad essere richiamato. Nella riga successiva, invece, siccome o3 è stato già creato, è l' operatore d' assegnazione ad essere richiamato.codice:Object o1; Object o2; Object o3 = o1; // Costruttore di copia (equivalente a Object o3(01)) o3 = o2; // Operatore d' assegnazione
Quando si vuole che la copia di un oggetto abbia l' effetto di una copia bit a bit, entrambi i metodi possono essere anche omessi, siccome il compilatore li inserisce automaticamente.
Quando invece non si vuole che la copia sia bit a bit (di solito questo avviene soprattutto quando si ha come membri della classe puntatori) è compito del programmatore definire entrambi i metodi.

Rispondi quotando