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_ptrNptr
Pole rvalue typu std::nullptr_tPtr
Objekt pointerDeleter
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
Existuje sedm konstruktorů pro unique_ptr. |
Typedefs
Synonymum pro parametr šablony Del. |
|
Synonymum pro parametr šablony Type. |
|
Synonymum pro Del::pointer, je-li definováno, jinak Type *. |
Členské funkce
Vrátí stored_ptr. |
|
Vrátí odkaz na stored_deleter. |
|
uloží pointer() v stored_ptr a vrátí jeho předchozí obsah. |
|
Uvolní aktuálně vlastněný prostředek a přijme nový prostředek. |
|
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. |
Přiřadí hodnotu unique_ptr (nebo pointer-type) k aktuální entitě unique_ptr. |
Požadavky
Hlavička: <memory>
Obor názvů: std