Sdílet prostřednictvím


weak_ptr Class

Obtéká slabě propojené ukazatele.

template<class Ty> class weak_ptr {
public:
    typedef Ty element_type;

    weak_ptr();
    weak_ptr(const weak_ptr&);
    template<class Other>
        weak_ptr(const weak_ptr<Other>&);
    template<class Other>
        weak_ptr(const shared_ptr<Other>&);

    weak_ptr& operator=(const weak_ptr&);
    template<class Other>
        weak_ptr& operator=(const weak_ptr<Other>&);
    template<class Other>
        weak_ptr& operator=(shared_ptr<Other>&);

    void swap(weak_ptr&);
    void reset();

    long use_count() const;
    bool expired() const;
    shared_ptr<Ty> lock() const;
    };

Parametry

  • Ty
    Typ řízena slabé ukazatel.

Poznámky

Popisuje šablony třídy objektu, který odkazuje na prostředek, který je spravován pomocí jedné nebo více shared_ptr Class objekty.weak_ptr Objekty, které vedou k prostředku nemají vliv na počet odkazů zdroje.Tedy, kdy poslední shared_ptr zničení objektu, který spravuje tento prostředek bude uvolněno zdroje i v případě, že existují weak_ptr objekty směřující k danému prostředku.Je to nezbytně nutné pro zamezení cykly v datových struktur.

A weak_ptr objekt odkazuje na prostředek, pokud byl vytvořen z shared_ptr objekt, který vlastní prostředek, pokud byl vytvořen z weak_ptr objekt, který odkazuje na tento zdroj, nebo v případě, že prostředek byl přiřazen k němu s weak_ptr::operator=.A weak_ptr objekt neposkytuje přímý přístup k prostředku, který odkazuje.Kód, který je nutné použít zdroj nemá tak prostřednictvím shared_ptr objekt, který je vlastníkem tohoto prostředku, vytvořeného voláním členské funkce weak_ptr::lock.A weak_ptr objekt vypršela, je-li prostředek, který odkazuje na bylo uvolněno, protože všechny shared_ptr objekty, které vlastní zdroje byly zničeny.Volání lock na weak_ptr objektu, která vypršela, vytvoří objekt prázdný shared_ptr.

Prázdné weak_ptr objekt neodkazuje na žádné prostředky a má žádné řídicí blok.Jeho členskou funkci lock vrátí objekt prázdný shared_ptr.

Cyklus nastane, když dva nebo více zdrojů, na které se řídí shared_ptr objekty udržují vzájemné odkazování na shared_ptr objekty.Cyklické propojený seznam se třemi prvky má například hlavního uzlu N0; Tento uzel obsahuje shared_ptr objekt, který vlastní další uzel N1; Tento uzel obsahuje shared_ptr objekt, který vlastní další uzel N2; Tento uzel zase drží shared_ptr objekt, který vlastní hlavního uzlu N0, ukončení cyklu.V takovém případě žádná počty odkazů se někdy stane nula a neuvolní uzly v cyklu.Odstranit cyklus, poslední uzel N2 by měly mít weak_ptr objekt odkazující na N0 místo shared_ptr objektu.Protože weak_ptr není vlastníkem objektu N0 nemá žádný vliv N0's referenční počet a při poslední odkaz program na hlavního uzlu zničen uzly v seznamu budou také zničena.

Členy

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

weak_ptr::weak_ptr

Konstrukce weak_ptr.

Bb982126.collapse_all(cs-cz,VS.110).gifMetody

weak_ptr::element_type

Typ prvku.

weak_ptr::expired

Zkoušky, je-li vlastnictví vypršela.

weak_ptr::lock

Získá výhradní vlastnictví prostředku.

weak_ptr::owner_before

Vrátí true li weak_ptr je řazen před (nebo menší než) poskytnutý ukazatel.

weak_ptr::reset

Vydání vlastní zdroje.

weak_ptr::swap

Zamění dva weak_ptr objekty.

weak_ptr::use_count

Spočítá počet určený shared_ptr objekty.

Bb982126.collapse_all(cs-cz,VS.110).gifOperátory

weak_ptr::operator=

Nahradí vlastní zdroje.

Požadavky

Záhlaví: <memory>

Obor názvů: std

Viz také

Referenční dokumentace

shared_ptr Class

Další zdroje

<memory> Členové