Sdílet prostřednictvím


weak_ptr – třída

Zalomí slabě propojený ukazatel.

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 malý ukazatel.

Poznámky

Popisuje šablony třídy objektu, který odkazuje na prostředek, který je spravován jednou nebo více shared_ptr – třída objekty.weak_ptr Objekty, které odkazují na zdroje nemají vliv na počet odkazů zdroje.Proto, když poslední shared_ptr je zničení objektu, který spravuje daný prostředek prostředek bude uvolněno, i když jsou weak_ptr objekty směřující k danému prostředku.To je nezbytné pro zamezení cykly v datových strukturách.

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 prostředek, nebo v případě, že prostředek byl přiřazen k ní 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 skrz shared_ptr objekt, který je vlastníkem tohoto zdroje vytvořené voláním členské funkce weak_ptr::lock.A weak_ptr objekt vypršela, když bylo uvolněno odkazující na zdroj, 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.

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

Vzniká cyklus ovládá dva nebo více zdrojů shared_ptr objekty udržují vzájemné odkazování na shared_ptr objekty.Například má kruhový propojeného seznamu se třemi prvky 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 má zase 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 uzly v cyklu nebude uvolněna.Odstranění cyklu, poslední uzel N2 by měly mít weak_ptr objekt přejdete na N0 místo shared_ptr objektu.Protože weak_ptr není vlastníkem objektu N0 nemá vliv N0na odkaz počítání, při zničen programu poslední odkaz na hlavní uzel uzly v seznamu budou také zničena.

Členy

Konstruktory

weak_ptr::weak_ptr

Sestaví weak_ptr.

Metody

weak_ptr::element_type

Typ prvku.

weak_ptr::expired

Zkoušky, pokud vypršela platnost vlastnictví.

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

Prohodí dva objekty weak_ptr.

weak_ptr::use_count

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

Operátory

weak_ptr::operator=

Nahradí vlastní zdroje.

Požadavky

Záhlaví: <paměť>

Obor názvů: std

Viz také

Referenční dokumentace

shared_ptr – třída

Další zdroje

<memory> Členové