Udostępnij za pośrednictwem


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

unique_ptr::unique_ptr

Istnieje siedem konstruktorów unique_ptr.

Typedefs

deleter_type

Synonim dla parametru szablonu Del.

element_type

Synonim dla parametru szablonu Type.

wskaźnik

Jest to synonim Del::pointer, jeśli jest zdefiniowany, w przeciwnym razie Type *.

Funkcje elementów członkowskich

unique_ptr::get

Zwraca stored_ptr.

unique_ptr::get_deleter

Zwraca odwołanie do stored_deleter.

unique_ptr::release

przechowuje pointer() w stored_ptr i zwraca jego poprzednią zawartość.

unique_ptr::reset

Zwalnia aktualnie posiadany zasób i akceptuje nowy zasób.

unique_ptr::swap

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.

unique_ptr operator=

Przypisuje wartość unique_ptr (lub pointer-type) do bieżącego unique_ptr.

Wymagania

Nagłówek: <memory>

Przestrzeń nazw: std

Zobacz też

Informacje

<memory>

Inne zasoby

unique_ptr członkowie