MEC++: Smart pointer

Appunti tratti dalla rilettura di More Effective C++ di Scott Meyers. Quinto blocco: Tecniche.

(28) Smart pointer

Gli smart pointer sono oggetti che sembrano puntatori ma offrono funzionalità aggiuntive.

Usando smart pointer invece di puntatori sciocchi/grezzi (dumb/raw) si ottiene il controllo su questi aspetti del loro comportamento:
  • costruzione e distruzione: normalmente uno smart pointer viene inizializzato a zero; é possibili implementare tecniche per ridurre il rischio di memory e resource leak;
  • copia e assegnamento: a seconda dell'implementazione, si possono ottenere diversi effetti;
  • dereferenziamento: l'accesso all'oggetto sotteso può essere regolamentato a piacimento.
auto_ptr

Il problema di come comportarsi in caso di costruzione per copia e assegnamento per uno smart pointer é risolto da auto_ptr trasferendo la proprietà del puntatore dal vecchio al nuovo smart pointer.

Data questa impostazione, é una pessima idea passare un auto_ptr per valore. Vanno passati invece per const reference.

Nessun commento:

Posta un commento