unique_ptr Class
Uchovává ukazatel na vlastnictví objektu.Je vlastníkem objektu žádné jiné unique_ptr.Zničení objektu při unique_ptr je zničen.
template<class Type, class Del = default_delete<Type> >
class unique_ptr {
public:
typedef Type element_type;
typedef Del deleter_type;
typedef T1 pointer;
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 ();
unique_ptr& operator= (
unique_ptr&& _Right
);
template<class Type2, Class Del2>
unique_ptr& operator= (
unique_ptr<Type2, Del2>&& _Right
);
void swap (
unique_ptr& _Right
);
pointer release ();
void reset (
pointer _Ptr = pointer()
);
pointer get () const;
Type& operator* () const;
pointer operator-> () const;
Del& get_deleter ();
const Del& get_deleter () const;
explicit operator bool () const;
unique_ptr(
const unique_ptr& _Right
) = delete;
unique_ptr& operator=(
const unique_ptr& _Right
) = delete;
private:
pointer stored_ptr; // exposition only
Del stored_deleter; // exposition only
};
Parametry
_Right
A unique_ptr._Nptr
An rvalue of type std::nullptr_t._Ptr
A pointer._Deleter
A deleter funkce, které je vázán unique_ptr.
Výjimky
Žádné výjimky, které jsou generovány pomocí unique_ptr.
Poznámky
unique_ptr Nahrazuje třídy auto_ptra mohou být použity jako prvek STL kontejnery.
unique_ptrjednoznačně spravuje zdroje.Každý unique_ptr objekt uchovává ukazatel na objekt vlastní nebo ukládá ukazatel s hodnotou null.Prostředek může být vlastněn nejvýše jednoho unique_ptr objekt; Když unique_ptr zničení objektu, který vlastní určitý prostředek, prostředek je uvolněn.A unique_ptr objekt může být přesunuta, ale nebylo možné zkopírovat; Další informace naleznete v tématu Rvalue referenční Declarator: & &.
Zdroj je uvolněna voláním uložené deleter objekt typu Del , ví, že přidělování prostředků pro konkrétní unique_ptr.Ve výchozím nastavení deleterdefault_delete<Type> předpokládá, že zdroj odkazuje _Ptr je přidělen s new, a že mohou být uvolněna voláním delete _Ptr. (Částečné specializace **unique_ptr<Type[]>**spravuje objekty pole přiděleny s new[], a má výchozí deleterdefault_delete<Type[]>, specializované volání delete [] _Ptr.)
Uložené ukazatel na vlastnictví prostředků, stored_ptr typu pointer.Je Del::pointer -li definována, a Type * Pokud tomu tak není.Uložené deleter objekt stored_deleter nezabírá prostor v objektu, pokud deleter je bez státní příslušnosti.Všimněte si, že Del může být typ odkazu.
Členy
Konstruktory
Existuje sedm konstruktory pro unique_ptr. |
Definice Typedef
Synonymum pro parametr šablony Del. |
|
Synonymum pro parametr šablonyType. |
|
Synonymum pro Del::pointer -li definována, jinak Type *. |
Členské funkce
Vrátí stored_ptr. |
|
Vrátí odkaz na stored_deleter. |
|
ukládá pointer() v stored_ptr a vrátí jeho předchozí obsah. |
|
Uvolní aktuálně vlastnictví prostředků a přijímá nové zdroje. |
|
Výměny zdrojů a deleter s poskytované unique_ptr. |
Operátory
operator bool |
Operátor vrací hodnotu typu, který je převést na bool.Výsledek převodu do bool je true při get() != pointer(), jinak false. |
operator-> |
Vrátí členská funkcestored_ptr. |
operator* |
Členské funkce vrátí *stored_ptr. |
Přiřadí hodnotu unique_ptr (nebo pointer-type) na aktuální unique_ptr. |
Požadavky
Záhlaví: <memory>
Obor názvů: std