Smart pointer: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Fix
riscrivo
Riga 1:
Un '''puntatore intelligente''' o '''''smart pointer''''' è un [[tipo di dato astratto]] che simula il comportamento di un [[Puntatore (programmazione)|puntatore]] e in più fornisce controlli aggiuntivi per la [[gestione della memoria]] automatica e il [[controllo dei limiti]]. Ciò ha lo scopo di ridurre gli errori dovuti a un uso errato dei puntatori, ma al tempo stesso mantenere la loro efficienza. I puntatori intelligenti sono diventati popolari con la loro introduzione in [[C++]] in risposta alle critche riguardanti la mancanza di una sistema di [[Garbage collection|''garbage collection'']].<ref>{{Cita web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1994/N0555.pdf|titolo=Exception Safe Smart Pointers|autore=Gregory Colvin|data=1994}}</ref> Dall'edizione [[C++11]], i puntatori intelligenti sono <code>std::unique_pointer</code>, <code>std::shared_pointer</code> e <code>std::weak_pointer</code>.
{{W|informatica|luglio 2013}}
 
== Note ==
Uno '''smart pointer''' ({{Lett|puntatore intelligente}}) è un oggetto del linguaggio [[C++]] che facilita l'utilizzo dei puntatori. Lo scopo principale di uno smart pointer è quello di provvedere una cancellazione automatica della memoria. Non facendo parte delle caratteristiche del C++ gli Smart Pointers vengono forniti attraverso librerie (tra cui quella standard), e pertanto non possono sostituirsi completamente alla gestione della memoria così come avviene per i linguaggi con Garbage Collection. Sono elencati qui di seguito i principali tipi di Smart Pointers ad oggi diffusi e ampiamente approvati dalla comunità.
<references />{{Portale|informatica}}
 
==Smart Pointers del C++03==
* std::auto_ptr (deprecato nel nuovo standard C++11)
 
==Smart pointers della libreria Boost==
* boost::shared_ptr
* boost::scoped_ptr
* boost::intrusive_ptr
* boost::weak_ptr
 
==Smart Pointers del C++11==
* std::shared_ptr
* std::weak_ptr
* std::unique_ptr
 
{{Portale|informatica}}
 
[[Categoria:C++]]