Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

La cosiddetta cultura alternativa si risolve il più delle volte in un'alternativa alla cultura.

Alessandro Morandotti 

Sondaggio:

Quale genere musicale preferisci?

latino americana
dance
rock
hip pop
heavy metal
techno
classica
leggera

visualizza risultati


 

Smart pointer

 

Un operatore particolarmente interessante e` quello di dereferenzazione -> il cui comportamento e` un po' difficile da capire.
Se T e` una classe che ridefinisce -> (l'operatore di dereferenzazione deve essere un funzione membro non statica) e Obj e` una istanza di tale classe, l'espressione


  Obj -> Field;


e` valutata come


  (Obj.operator ->()) -> Field;


Conseguenza di cio` e` che il risultato di questo operatore deve essere uno tra

  • un puntatore ad una struttura o una classe che contiene un membro Field;
  • una istanza di un'altra classe che ridefinisce a sua volta l'operatore. In questo caso l'operatore viene applicato ricorsivamente all'oggetto ottenuto prima, fino a quando non si ricade nel caso precedente;

In questo modo e` possibile realizzare puntatori intelligenti (smart pointer), capaci di eseguire controlli per prevenire errori disastrosi.
Pur essendo un operatore unario postfisso, il modo in cui viene trattato impone che ci sia sul lato destro una specie di secondo operando; se volete potete pensare che l'operatore predefinito sia in realta` un operatore binario il cui secondo argomento e` il nome del campo di una struttura, mentre l'operatore che l'utente puo` ridefinire deve essere unario.

 

successivo
–«  INDICE  »–

 

 

 

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