web-dev-qa-db-ja.com

boost :: scoped_ptr <T>とstd :: unique_ptr <T>の違い

boost::scoped_ptr<T>std::unique_ptr<T>の唯一の違いは、std::unique_ptr<T>が移動セマンティクスを持っているのに対し、boost::scoped_ptr<T>は単なるget/resetスマートポインターですか?

54
moshbear

いいえ、しかしそれが最も重要な違いです。

もう1つの大きな違いは、unique_ptrができる方法と同様に、shared_ptrがデストラクタオブジェクトを持つことができることです。 shared_ptrとは異なり、デストラクタタイプはunique_ptrのタイプの一部です(アロケータがSTLコンテナタイプの一部である方法)。

43
Nicol Bolas

unique_ptrはオブジェクトを排他的に所有します。これはコピー不可ですが、所有権の移転をサポートしています。廃止されたauto_ptrの代替として導入されました。

scoped_ptrコピーも移動もできないです。スコープ外に出たときにポインターを確実に削除したい場合に推奨される選択肢です。

28
Alok Save