1. ホーム
  2. c++

[解決済み】std::auto_ptrからstd::unique_ptrへ

2022-04-12 06:45:43

質問

新しい規格の登場により(一部のコンパイラでは既に利用可能な部分もあります)、新しい型である std::unique_ptr に代わるものとして想定されているのが std::auto_ptr .

その使い方はぴったり重なるのか(自分のコードでグローバル検索・置換ができるようになるのか(するわけではありませんが、するとしたら))、ドキュメントを読んでもわからないような違いがあるので注意したほうがいいのでしょうか。

また、直接的に置き換えるのであれば、なぜ単に std::auto_ptr ?

解決方法は?

グローバル検索/置換はできません。 auto_ptr (結果は分かっていますが)しかし unique_ptr は移動のみ可能です。のように見えるものは

std::auto_ptr<int> p(new int);
std::auto_ptr<int> p2 = p; 

は、少なくとも次のようになる必要があります。

std::unique_ptr<int> p(new int);
std::unique_ptr<int> p2 = std::move(p);

その他の違いについては unique_ptr は配列を正しく処理することができます(これは delete[] 一方 auto_ptr を呼び出そうとします。 delete .