unique_ptr Class
Przechowuje wskaźnika do której jest właścicielem obiektu.Jest właścicielem obiektu żaden inny unique_ptr.Obiekt jest niszczony, kiedy unique_ptr jest niszczony.
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 funkcji, który jest powiązany z unique_ptr.
Wyjątki
Bez wyjątków są generowane przez unique_ptr.
Uwagi
unique_ptr Zastępuje klasy auto_ptri może służyć jako element kontenerów STL.
unique_ptrjednoznacznie zarządza zasobem.Każdy unique_ptr obiekt przechowuje wskaźnik do obiektu jest właścicielem lub przechowuje pusty wskaźnik.Zasób może być własnością nie więcej niż jednego unique_ptr zgłasza zastrzeżeń; gdy unique_ptr niszczony jest obiekt, który jest właścicielem określonego zasobu, zasób zostaje zwolniony.A unique_ptr obiekt może być przeniesiony, ale nie jest kopiowane; Aby uzyskać więcej informacji, zobacz Odwołanie Rvalue; niewłaściwy deklarator: & &.
Zasób jest zwalniany, wywołując zachowane deleter obiektu typu Del który wie, sposobu przydzielania zasobów dla danego unique_ptr.Domyślnie deleterdefault_delete<Type> zakłada, że zasób wskazywanej przez _Ptr jest przydzielany z new, i które może zostać zwolnione, wywołując delete _Ptr. (Częściowa specjalizacja **unique_ptr<Type[]>**zarządza obiektami tablicy rozdzielone z new[], i ma domyślnie deleterdefault_delete<Type[]>, specjalistyczne do wywołania [delete] _Ptr.)
Przechowywanych wskaźnik, do której jest właścicielem zasobu, stored_ptr ma typ pointer.Jest Del::pointer Jeśli została zdefiniowana, a Type * Jeśli nie.Przechowywane deleter obiektu stored_deleter zajmuje bez spacji w obiekcie, jeśli deleter jest bezpaństwowy.Należy zauważyć, że Del może być typem odwołania.
Elementy członkowskie
Konstruktory
Istnieje siedem konstruktorów unique_ptr. |
Definicje typów
Synonim dla parametru Del. |
|
Jest to synonim parametr szablonuType. |
|
Jest to synonim Del::pointer Jeśli zdefiniowane inaczej Type *. |
Funkcje składowe
Zwraca wartość typu stored_ptr. |
|
Zwraca odwołanie do stored_deleter. |
|
przechowuje pointer() w stored_ptr i zwraca jego poprzedniej zawartości. |
|
Zwalnia zasoby aktualnie własnością i akceptuje nowy zasób. |
|
Wymiany zasobów i deleter z pod warunkiem unique_ptr. |
Operatory
operator bool |
Operator zwraca wartość typu, jest konwertowany na bool.Wynik konwersji na bool jest true po get() != pointer(), w przeciwnym razie false. |
operator-> |
Zwraca element członkowski funkcjastored_ptr. |
operator* |
Zwraca wartość funkcji Członkowskich *stored_ptr. |
Przypisuje wartość elementu unique_ptr (lub pointer-type) do bieżącego unique_ptr. |
Wymagania
Nagłówek: <memory>
Obszar nazw: std