Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

Sfortunatamente la nostra ricca societ? ? stata anche una societ? deludente.

Hubert Horatio Humphrey 

Sondaggio:

Ti senti un sopravvissuto a...

Grande Fratello
Euro
tua mamma
tua suocera
le feste natalizie
la scuola
i tuoi ex
il/la partner

visualizza risultati


 

L'operatore di assegnamento

 

L'assegnamento e` un operatore molto particolare, la sua semantica classica e` quella di modificare il valore dell'oggetto cui e` applicato con quello ricevuto come parametro e restituire poi tale valore al fine di consentire espressioni del tipo


  A = B = C = < Valore >


che e` equivalente a


  A = (B = (C = < Valore >));


Non lo si confonda con il costruttore di copia: il costruttore e` utilizzato per costruire un nuovo oggetto inizializzandolo con il valore di un altro, l'assegnamento viene utilizzato su oggetti gia` costruiti.


  Complex C = B;      // Costruttore di copia
  /* ... */
  C = D;              // Assegnamento


Un'altra particolarita` di questo operatore lo rende simile al costruttore (oltre al fatto che deve essere una funzione membro): se in una classe non ne viene definito uno nella forma X::operator=(X&), il compilatore ne fornisce uno che esegue la copia bit a bit. Lo standard stabilisce che sia il costruttore di copia che l'operatore di assegnamento forniti dal compilatore debbano eseguire non una copia bit a bit, ma una inizializzazione o assegnamento a livello di membri chiamando il costruttore di copia o l'operatore di assegnamento relativi al tipo di quel membro. In ogni caso comunque e necessario definire esplicitamente sia l'operatore di assegnamento che il costruttore di copia ogni qual volta la classe contenga puntatori, onde evitare spiacevoli condivisioni di memoria.
Notate infine che, come per le funzioni, anche per un operatore e` possibile avere piu` versioni overloaded; in particolare una classe puo` dichiarare piu` operatori di assegnamento, ma e` quello di cui sopra che il compilatore fornisce quando manca.

 

successivo
–«  INDICE  »–

 

 

 

 
Powered by paper&pencil (carta&matita ) - Copyright © 2001-2022 Cataldo Sasso