boost::scoped_ptr<T>
との間の唯一の違いは、移動セマンティクスstd::unique_ptr<T>
を持っているのに対し、単なるget / resetスマートポインターですか?std::unique_ptr<T>
boost::scoped_ptr<T>
2 に答える
いいえ、しかしそれが最も重要な違いです。
もう1つの大きな違いは、unique_ptr
方法と同様に、デストラクタオブジェクトを使用shared_ptr
できることです。とは異なりshared_ptr
、デストラクタタイプはunique_ptr
のタイプの一部です(アロケータがSTLコンテナタイプの一部である方法)。
Aは、できるconst unique_ptr
ことのほとんどを効果的に行うことがscoped_ptr
できます。実際、とは異なりscoped_ptr
、呼び出しconst unique_ptr
でリバウンドすることはできません。reset
また、不完全なタイプであるにunique_ptr<T>
取り組むことができます。T
デフォルトの削除者タイプでは、削除者を呼び出す可能性T
のあるものに対して何かを行うときに、完全である必要があります。unique_ptr
したがって、状況に応じて、それがどこで発生するかについてゲームをプレイする自由があります。
unique_ptr
オブジェクトを排他的に所有します。コピーはできませんが、所有権の譲渡をサポートします。これは、現在非推奨になっているの代わりとして導入されましたauto_ptr
。
scoped_ptr
コピーも移動もできません。スコープ外に出たときにポインタが確実に削除されるようにする場合は、この選択をお勧めします。