Sdílet prostřednictvím


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

Ee410601.collapse_all(cs-cz,VS.110).gifKonstruktory

unique_ptr::unique_ptr

Existuje sedm konstruktory pro unique_ptr.

Ee410601.collapse_all(cs-cz,VS.110).gifDefinice Typedef

deleter_type

Synonymum pro parametr šablony Del.

element_type

Synonymum pro parametr šablonyType.

pointer

Synonymum pro Del::pointer -li definována, jinak Type *.

Ee410601.collapse_all(cs-cz,VS.110).gifČlenské funkce

unique_ptr::get

Vrátí stored_ptr.

unique_ptr::get_deleter

Vrátí odkaz na stored_deleter.

unique_ptr::release

ukládá pointer() v stored_ptr a vrátí jeho předchozí obsah.

unique_ptr::reset

Uvolní aktuálně vlastnictví prostředků a přijímá nové zdroje.

unique_ptr::swap

Výměny zdrojů a deleter s poskytované unique_ptr.

Ee410601.collapse_all(cs-cz,VS.110).gifOperá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.

unique_ptr operator=

Přiřadí hodnotu unique_ptr (nebo pointer-type) na aktuální unique_ptr.

Požadavky

Záhlaví: <memory>

Obor názvů: std

Viz také

Referenční dokumentace

<memory>

Další zdroje

unique_ptr členů