unique_ptr — Klasa
Przechowuje wskaźnik do posiadanego obiektu.Obiekt nie jest własnością żadnego innego unique_ptr.Obiekt jest niszczony, kiedy niszczony jest 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
Element unique_ptr.Nptr
Wartość rvalue typu std::nullptr_t.Ptr
Element pointer.Deleter
Funkcja deleter, która jest powiązana z unique_ptr.
Wyjątki
Żadne wyjątki nie są generowane przez unique_ptr.
Uwagi
Klasa unique_ptr zastępuje auto_ptr i może być używana jako element kontenerów STL.
Używaj funkcji pomocnika make_unique, aby skutecznie tworzyć nowe wystąpienia unique_ptr.
unique_ptr jednoznacznie zarządza zasobem.Każdy obiekt unique_ptr przechowuje wskaźnik do obiektu, którego jest właścicielem, lub przechowuje wskaźnik zerowy.Zasób może być własnością tylko jednego obiektu unique_ptr; podczas niszczenia obiektu unique_ptr, który posiada określony zasób, zasób zostanie zwolniony.Obiekt unique_ptr można przenosić, ale nie można go kopiować; aby uzyskać więcej informacji, zobacz Deklarator odwołania do wartości R: &&.
Zasób jest zwalniany przez wywołanie przechowywanego obiektu deleter typu Del, który wie, jak zasoby są przydzielane dla danego unique_ptr.Domyślnie deleterdefault_delete<Type> zakłada, że zasób wskazywany przez _Ptr jest przydzielany z new i że może być zwolniony przez wywołanie delete _Ptr. (Częściowa specjalizacja **unique_ptr<Type[]>**zarządza obiektami tablicy przydzielonymi przez new[] i ma domyślny deleterdefault_delete<Type[]>, wyspecjalizowany w celu wywoływania delete[] _Ptr.)
Przechowywany wskaźnik do zasobu będącego własnością, stored_ptr ma typ pointer.Jest to Del::pointer, jeśli zdefiniowany, i Type * , jeśli nie.Przechowywany obiekt deleterstored_deleter nie zajmuje miejsca w obiekcie, jeśli deleter jest bezstanowy.Należy zauważyć, że Del może być typem odwołania.
Elementy członkowskie
Konstruktory
Istnieje siedem konstruktorów unique_ptr. |
Typedefs
Synonim dla parametru szablonu Del. |
|
Synonim dla parametru szablonu Type. |
|
Jest to synonim Del::pointer, jeśli jest zdefiniowany, w przeciwnym razie Type *. |
Funkcje elementów członkowskich
Zwraca stored_ptr. |
|
Zwraca odwołanie do stored_deleter. |
|
przechowuje pointer() w stored_ptr i zwraca jego poprzednią zawartość. |
|
Zwalnia aktualnie posiadany zasób i akceptuje nowy zasób. |
|
Wymienia zasób i deleter na dostarczony unique_ptr. |
Operatory
operator bool |
Operator zwraca wartość typu, który jest konwertowany na bool.Wynik konwersji na bool jest true, gdy get() != pointer(), w przeciwnym razie false. |
operator-> |
Funkcja elementu członkowskiego zwraca stored_ptr. |
operator* |
Funkcja elementu członkowskiego zwraca *stored_ptr. |
Przypisuje wartość unique_ptr (lub pointer-type) do bieżącego unique_ptr. |
Wymagania
Nagłówek: <memory>
Przestrzeń nazw: std