web-dev-qa-db-fra.com

Différence entre boost :: scoped_ptr <T> et std :: unique_ptr <T>

La seule différence entre boost::scoped_ptr<T> et std::unique_ptr<T> le fait que std::unique_ptr<T> a une sémantique de déplacement alors que boost::scoped_ptr<T> est juste un pointeur intelligent get/reset?

54
moshbear

Non, mais c'est la différence la plus importante.

L'autre différence majeure est que unique_ptr Peut avoir un objet destructeur avec lui, de la même manière que shared_ptr. Contrairement à shared_ptr, Le type destructeur fait partie du type de unique_ptr (La façon dont les allocateurs font partie des types de conteneurs STL).

43
Nicol Bolas

unique_ptr possède un objet exclusivement. Il est non copiable mais prend en charge transfert de propriété. Il a été introduit en remplacement du _ désormais obsolète auto_ptr.

scoped_ptr est ni copiable ni mobile. C'est le choix préféré lorsque vous souhaitez vous assurer que les pointeurs sont supprimés lorsque vous sortez de la portée.

28
Alok Save