Sdílet prostřednictvím


unique_ptr – třída

Uchovává ukazatel na vlastní objekt.Objekt není ve vlastnictví žádné jiné hodnoty unique_ptr.Objekt je zničen při zničení 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;
};

Parametry

  • Right
    Objekt unique_ptr

  • Nptr
    Pole rvalue typu std::nullptr_t

  • Ptr
    Objekt pointer

  • Deleter
    Funkce deleter, která je vázána na unique_ptr.

Výjimky

Pomocí unique_ptr nejsou generovány žádné výjimky.

Poznámky

Třída unique_ptr nahrazuje auto_ptr a lze ji použít jako prvek kontejnerů STL.

Použijte funkci pomocníku make_unique k efektivnímu vytvoření nových instancí unique_ptr.

unique_ptr jednoznačně spravuje prostředky.Každý objekt unique_ptr uchovává ukazatel na objekt, který vlastní, nebo uchovává ukazatel s hodnotou null.Prostředek může být vlastněn maximálně jedním objektem unique_ptr; když je poslední objekt unique_ptr, který vlastní určitý prostředek, zničen, prostředek je uvolněn.Objekt unique_ptr lze přesunout, ale nikoli kopírovat; další informace naleznete v tématu Deklarátor odkazu hodnoty R: &&.

Prostředek je uvolněn voláním uloženého objektu deleter typu Del, které ví, jak jsou prostředky pro konkrétní unique_ptr přidělovány.Výchozí deleterdefault_delete<Type> předpokládá, že prostředek, na který ukazuje _Ptr, je přiřazen s new a lze jej uvolnit voláním delete _Ptr. (unique_ptr<Type[]> s částečnou specializací spravuje objekty pole přiřazené s new[] a má výchozí deleterdefault_delete<Type[]> specializované na delete[] _Ptr.)

Uložený ukazatel na vlastní prostředek stored_ptr má typ pointer.Je to Del::pointer, pokud je definován, a Type * , pokud není.Uložený deleter objekt stored_deleter nezabírá žádný prostor, pokud deleter nemá stav.Všimněte si, že Del může být typ odkazu.

Členy

Konstruktory

unique_ptr::unique_ptr

Existuje sedm konstruktorů pro unique_ptr.

Typedefs

deleter_type

Synonymum pro parametr šablony Del.

element_type

Synonymum pro parametr šablony Type.

ukazatel

Synonymum pro Del::pointer, je-li definováno, jinak Type *.

Členské funkce

unique_ptr::get

Vrátí stored_ptr.

unique_ptr::get_deleter

Vrátí odkaz na stored_deleter.

unique_ptr::release

uloží pointer() v stored_ptr a vrátí jeho předchozí obsah.

unique_ptr::reset

Uvolní aktuálně vlastněný prostředek a přijme nový prostředek.

unique_ptr::swap

Vymění prostředek a deleter za poskytnutý unique_ptr.

Operátory

operator bool

Operátor vrátí hodnotu typu, který lze převést na bool.Výsledek převodu na bool je true, když get() != pointer(), jinak false.

operator->

Členská funkce vrátí stored_ptr.

operator*

Členská funkce vrátí*stored_ptr.

unique_ptr operator=

Přiřadí hodnotu unique_ptr (nebo pointer-type) k aktuální entitě unique_ptr.

Požadavky

Hlavička: <memory>

Obor názvů: std

Viz také

Referenční dokumentace

<memory>

Další zdroje

unique_ptr členů