3

ユーザーが一意のポインターの所有権を明示的に取得できないようにする方法はありますか

 std::move

?

4

2 に答える 2

8

成功するconst

unique_ptrmove コンストラクターは非 const 右辺値参照を取るためconstオブジェクトで呼び出すことはできません。

const unique_ptr<int> owner(new int);
// ...
unique_ptr<int> thief = std::move(owner);  // ERROR

これによりunique_ptrboost::scoped_ptr

于 2013-03-09T00:22:55.260 に答える
5

を返すことstd::unique_ptrで、オブジェクトの制御を放棄したことになります。新しい所有者はそれを破棄するか、他の誰かに渡します。

ユーザーがオブジェクトを解放することを意図していない場合は、参照を返します。

boost::scoped_ptr/ (ジョナサンの回答を参照) が技術的にあなたconst std::unique_ptrの質問に答えます - 発信者は解放しますが、リソースを譲渡することはできません - しかし、なぜそれや参照ではなくこれが必要なのかの説得力のある例が見当たりませんstd::unique_ptr

于 2013-03-08T21:03:01.457 に答える