Smart pointer: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Note: Aggiunto un a capo per separare il tag "references/" dal template "Portale"
 
(4 versioni intermedie di 4 utenti non mostrate)
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 critiche riguardanti la mancanza di un sistema di ''[[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}}
 
Gli '''smart pointers''' (letteralmente "puntatori intelligenti") sono oggetti del linguaggio [[C++]] che facilitano 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à.
 
==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
 
== Note ==
<references />
{{Portale|informatica}}