std::auto_ptr
提供: cppreference.com
ヘッダ <memory> で定義 | ||
template<class T >class auto_ptr; | (1) | (C++11で非推奨) (C++17で削除) |
template<>class auto_ptr<void>; | (2) | (C++11で非推奨) (C++17で削除) |
auto_ptr
は new 式を通して取得したオブジェクトを管理し、 auto_ptr
自身が破棄されたときにそのオブジェクトを削除するスマートポインタです。 動的確保されたオブジェクトに対して例外安全性を提供し、動的確保されたオブジェクトの所有権を関数に渡したり、動的確保されたオブジェクトを関数から返したりするために使用することができます。
auto_ptr
のコピーは、そのポインタをコピーするとともにその所有権もコピー先に転送します。 auto_ptr
のコピー構築およびコピー代入は両方とも右辺の引数を変更し、その「コピー」は元と等しくないものになります。 こういった普通でないコピーセマンティクスのため、 auto_ptr
は標準コンテナに格納することができません。 代わりに std::unique_ptr を使用することが推奨されます。(C++11以上)
2)void 型に対する特殊化が提供されます。 これは typedef
element_type
を宣言しますが、メンバ関数はありません。追加のクラステンプレート auto_ptr_ref
がドキュメント中で参照されています。 これは auto_ptr
への参照を保持する処理系定義の型です。 処理系はこのテンプレートを異なる型で提供したり、それを返す関数や引数として受け取る関数を他の方法で実装することが許されています。
目次 |
[編集]メンバ型
メンバ型 | 定義 |
element_type | T |
[編集]メンバ関数
新しい auto_ptr を作成します (パブリックメンバ関数) | |
auto_ptr およびその管理対象オブジェクトを破壊します (パブリックメンバ関数) | |
別の auto_ptr から所有権を転送します (パブリックメンバ関数) | |
管理対象のポインタを異なる型のポインタに変換します (パブリックメンバ関数) | |
観察 | |
管理対象オブジェクトへのポインタを返します (パブリックメンバ関数) | |
管理対象オブジェクトにアクセスします (パブリックメンバ関数) | |
変更 | |
管理対象オブジェクトを置換します (パブリックメンバ関数) | |
管理対象オブジェクトの所有権を解放します (パブリックメンバ関数) |