Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

La vera felicit? ? la pace con se stessi. E, per averla, non bisogna tradire la propria natura.

Mario Monicelli 

Sondaggio:

Quale fra queste coppie di comici preferisci?

Tot? e Peppino
Stanlio e Olio
Franco e Ciccio
Greggio e Iacchetti
Ale e Franz

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-2019 Cataldo Sasso