std::auto_ptr
From 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を作成する(public メンバ関数) | |
auto_ptrと管理対象オブジェクトを破棄する(public メンバ関数) | |
別のauto_ptrから所有権を転送する(public メンバ関数) | |
| 管理対象ポインタを異なる型へのポインタに変換する (public メンバ関数) | |
監視 | |
| 管理対象オブジェクトへのポインタを返す (public メンバ関数) | |
| 管理対象オブジェクトにアクセスする (public メンバ関数) | |
変更 | |
| 管理対象オブジェクトを置き換える (public メンバ関数) | |
| 管理対象オブジェクトの所有権を解放する (public メンバ関数) | |