tout ce qui est *_ptr utilise delete, *_array utilise delete[]
scoped_* : son destructeur détruit l'objet. ne peut pas être copié.
shared_* : utilise un compteur de référence (sans gc) et détruit quand la dernière référence est détruite. peut être copié, et est donc le seul type à pouvoir être stocké dans un conteneur STL.
weak_ptr : c'est une référence faible vers un shared_ptr. Comme un shared_ptr qui ne contribue pas au compteur de référence (en gros)
auto_ptr : (c'est dans la STL au cas ou) : son destructeur détruit l'objet, mais le pointeur peut être transféré d'un auto_ptr à un autre.
unique_ptr : la même chose que auto_ptr, en version boost prévu pour le prochain standart.
Personnellement, j'ajouterai les vector_ptr/set_ptr/list_ptr/...._ptr qui sont comme des vector/set/list/...<T*> sauf que le T* est détruit automatiquement. Ça évite de devoir faire des vector<shared_ptr<T*> > et ainsi d'avoir des milliers de compteurs de références qui seront toujours à 1.
[^] # Re: Boost ? c'est quoi ?
Posté par Batchyx . En réponse à la dépêche Sortie de Boost 1.46. Évalué à 4.
C'est pas bien compliqué pourtant :
Personnellement, j'ajouterai les vector_ptr/set_ptr/list_ptr/...._ptr qui sont comme des vector/set/list/...<T*> sauf que le T* est détruit automatiquement. Ça évite de devoir faire des vector<shared_ptr<T*> > et ainsi d'avoir des milliers de compteurs de références qui seront toujours à 1.