unique_ptr クラス
所有されているオブジェクトへのポインターを格納します。 このオブジェクトは、この unique_ptr によってのみ所有されます。 このオブジェクトは、unique_ptr が破棄されたときに破棄されます。
template< class Type, class Del = default_delete<Type> >
class unique_ptr {
public:
unique_ptr( );
unique_ptr( nullptr_t Nptr );
explicit unique_ptr( pointer Ptr );
unique_ptr( pointer Ptr,
typename conditional<is_reference<Del>::value,
Del,
typename add_reference<const Del>::type>::type Deleter);
unique_ptr (pointer Ptr,
typename remove_reference<Del>::type&& Deleter);
unique_ptr (unique_ptr&& Right);
template<class Type2, Class Del2> unique_ptr( unique_ptr<Type2, Del2>&& Right );
unique_ptr( const unique_ptr& Right) = delete;
unique_ptr& operator=(const unique_ptr& Right ) = delete;
};
パラメーター
Right
unique_ptrNptr
std::nullptr_t 型の rvalue。Ptr
pointerDeleter
unique_ptr にバインドされている deleter 関数。
例外
例外は unique_ptr で生成されません。
解説
unique_ptr クラスは、auto_ptr に代わるものであり、STL コンテナーの要素として使用できます。
効率的に unique_ptr の新しいインスタンスを作成するには、make_unique ヘルパー関数を使用します。
unique_ptr は一意にリソースを管理します。 unique_ptr オブジェクトは null ポインターを所有または保存するオブジェクトへのポインターを格納します。 1 つのリソースは、1 つの unique_ptr オブジェクトによってのみ所有されます。特定のリソースを所有する unique_ptr オブジェクトが破棄された時点で、リソースが解放されます。 unique_ptr オブジェクトを移動することはできますが、コピーすることはできません。詳細については、「右辺値参照宣言子: &&」を参照してください。
特定の unique_ptr に対するリソースの割り当てを認識する、Del 型の格納された deleter オブジェクトを呼び出すことによって、リソースが解放されます。 既定の deleter default_delete<Type> は、_Ptr が指すリソースが、new に割り当てられることと、delete _Ptr を呼び出すことによって解放できることを前提としています (部分的特殊化 unique_ptr<Type[]> は new[] で割り当てられた配列オブジェクトを管理します。また、delete[] _Ptr の呼び出しに特化した既定の deleter default_delete<Type[]> があります)。
所有されたリソースに対する格納されたポインター、stored_ptr には、pointer 型があります。 これは、定義されている場合は Del::pointer、定義されていない場合は Type * です。 deleter がステートレスである場合、格納された deleter オブジェクトである stored_deleter はオブジェクト内の領域を使用しません。 Del が参照型である場合があることに注意してください。
メンバー
コンストラクター
unique_ptr には、7 種類のコンストラクターがあります。 |
Typedef
テンプレート パラメーター Del のシノニム。 |
|
テンプレート パラメーター Type. のシノニム。 |
|
定義されている場合は Del::pointer のシノニム、それ以外の場合は Type * のシノニム。 |
メンバー関数
stored_ptr を返します。 |
|
stored_deleter への参照を返します。 |
|
pointer() を stored_ptr に格納し、以前の内容を返します。 |
|
現在所有されているリソースを解放し、新しいリソースを受け取ります。 |
|
指定された unique_ptr を使用して、リソースと deleter を交換します。 |
演算子
operator bool |
この演算子は、bool に変換可能な型の値を返します。 bool への変換結果は、get() != pointer() の場合は true、それ以外の場合は false です。 |
operator-> |
このメンバー関数は、stored_ptr. を返します。 |
operator* |
このメンバー関数は、*stored_ptr. を返します。 |
現在の unique_ptr に unique_ptr (または pointer-type) の値を割り当てます。 |
必要条件
ヘッダー:<memory>
名前空間: std