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
Konstruktory
Konstrukce weak_ptr. |
Metody
Typ prvku. |
|
Zkoušky, je-li vlastnictví vypršela. |
|
Získá výhradní vlastnictví prostředku. |
|
Vrátí true li weak_ptr je řazen před (nebo menší než) poskytnutý ukazatel. |
|
Vydání vlastní zdroje. |
|
Zamění dva weak_ptr objekty. |
|
Spočítá počet určený shared_ptr objekty. |
Operátory
Nahradí vlastní zdroje. |
Požadavky
Záhlaví: <memory>
Obor názvů: std