Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    27

    [c++]costruttore di copia

    Salve a tutti, perdonate l'ignoranza,ma ho qualche dubbio riguardo il costruttore di copia. E più precisamente il mio dubbio si puo' riassumere formalmente in queste domande:

    Che differenza c'è tra il costruttore di copia e l'operatore di assegnamento?? QUANDO viene chiamato l'uno O l'altro? E QUANDO è il caso di definire l'uno o l'altro o entrambi?

    A chi gentilmente risponde in modo chiaro,gliene sono veramente grato.
    Sono graditi anche esempi.

  2. #2
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    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.
    codice:
    Object o1;
    Object o2;
    Object o3 = o1; // Costruttore di copia (equivalente a Object o3(01))
    o3 = o2;		// Operatore d' assegnazione
    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.
    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.
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.