Die Bibliothek Boost.SmartPointers bietet verschiedene Smartpointer an. Sie helfen, dynamisch reservierte Objekte zu verwalten. Diese werden in Smartpointern verankert, die die dynamisch reservierten Objekte im Destruktor freigeben. Da Destruktoren ausgeführt werden, wenn der Gültigkeitsbereich von Smartpointern endet, ist die Freigabe von dynamisch reservierten Objekten garantiert. Es kann nicht zu Speicherlecks kommen, weil ein delete
vergessen wurde.
Die Standardbibliothek kennt seit C++98 den Smartpointer std::auto_ptr
. Dieser gilt seit C++11 als veraltet. Mit dieser Version haben neue und bessere Smartpointer Einzug in den Standard gehalten. std::shared_ptr
und std::weak_ptr
stammen ursprünglich aus Boost.SmartPointers und heißen hier boost::shared_ptr
und boost::weak_ptr
. Zu std::unique_ptr
gibt es kein Gegenstück. Dafür bietet Boost.SmartPointers mit boost::scoped_ptr
, boost::scoped_array
, boost::shared_array
und boost::intrusive_ptr
vier weitere Smartpointer an, die in der Standardbibliothek fehlen.
Die Boost-Bibliotheken bieten seit der Version 1.57.0 ein Gegenstück zu std::unique_ptr
an. Die Klasse heißt boost::movelib::unique_ptr
und befindet sich nicht in Boost.SmartPointers, sondern in Boost.Move. Boost.Move wird in diesem Buch nicht vorgestellt. Diese Bibliothek bietet eine Emulation von Rvalue-Referenzen für Entwicklungsumgebungen an, die C++11 nicht unterstützen. Arbeiten Sie mit C++11, können Sie boost::movelib::unique_ptr
und Boost.Move ignorieren.