Share via


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_ptr

  • Nptr
    std::nullptr_t 型の rvalue

  • Ptr
    pointer

  • Deleter
    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::unique_ptr

unique_ptr には、7 種類のコンストラクターがあります。

Typedef

deleter_type

テンプレート パラメーター Del のシノニム。

element_type

テンプレート パラメーター Type. のシノニム。

ポインター

定義されている場合は Del::pointer のシノニム、それ以外の場合は Type * のシノニム。

メンバー関数

unique_ptr::get

stored_ptr を返します。

unique_ptr::get_deleter

stored_deleter への参照を返します。

unique_ptr::release

pointer() を stored_ptr に格納し、以前の内容を返します。

unique_ptr::reset

現在所有されているリソースを解放し、新しいリソースを受け取ります。

unique_ptr::swap

指定された unique_ptr を使用して、リソースと deleter を交換します。

演算子

operator bool

この演算子は、bool に変換可能な型の値を返します。 bool への変換結果は、get() != pointer() の場合は true、それ以外の場合は false です。

operator->

このメンバー関数は、stored_ptr. を返します。

operator*

このメンバー関数は、*stored_ptr. を返します。

unique_ptr operator=

現在の unique_ptrunique_ptr (または pointer-type) の値を割り当てます。

必要条件

ヘッダー:<memory>

名前空間: std

参照

関連項目

<memory>

その他の技術情報

unique_ptr のメンバー