std::auto_ptr<T>:: auto_ptr
From cppreference.net
C++
Memory management library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
explicit
auto_ptr
(
X
*
p
=
0
)
throw
(
)
;
|
(1) |
(C++11で非推奨)
(C++17で削除) |
|
auto_ptr
(
auto_ptr
&
r
)
throw
(
)
;
|
(2) |
(C++11で非推奨)
(C++17で削除) |
|
template
<
class
Y
>
auto_ptr ( auto_ptr < Y > & r ) throw ( ) ; |
(3) |
(C++11で非推奨)
(C++17で削除) |
|
auto_ptr
(
auto_ptr_ref
<
X
>
m
)
throw
(
)
;
|
(4) |
(C++11で非推奨)
(C++17で削除) |
auto_ptr
を、管理対象のオブジェクトを参照するポインタから構築します。
1)
auto_ptr
をポインタ
p
で構築します。
2)
auto_ptr
を、
r
が保持するポインタで構築します。
r.
release
(
)
が呼び出され、オブジェクトの所有権を取得します。
3)
(2)と同様。
Y
*
は
T
*
に暗黙的に変換可能でなければならない。
4)
auto_ptr
を、
m
によって参照される
auto_ptr
インスタンスが保持するポインタで構築します。
p.
release
(
)
が、オブジェクトの所有権を取得するために
m
が保持する
auto_ptr p
に対して呼び出されます。
auto_ptr_ref
は、
auto_ptr
への参照を保持する実装定義の型です。
std::auto_ptr
はこの型へ暗黙的に
変換可能
であり、この型からの
代入も可能
です。実装はこのテンプレートに異なる名前を付けたり、同等の機能を他の方法で実装することが許可されています。
パラメータ
| p | - | 管理対象オブジェクトへのポインタ |
| r | - |
オブジェクトの所有権を転送するための別の
auto_ptr
|
| m | - |
auto_ptr
への参照を保持する実装定義型
|
注記
auto_ptr_ref
からのコンストラクタとコピー代入演算子は、
無名一時オブジェクトからの
std::auto_ptr
の
コピー構築と代入を可能にするために提供されています。そのコピーコンストラクタとコピー代入演算子は
引数を非const参照として受け取るため、右辺値引数を直接バインドすることはできません。しかし、
ユーザー定義変換
を実行し(これにより元の
auto_ptr
が解放されます)、
その後
auto_ptr_ref
を値で受け取るコンストラクタまたはコピー代入演算子を呼び出すことができます。
これは
ムーブセマンティクス
の
初期の実装です。