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
Sestaví weak_ptr. |
Metody
Typ prvku. |
|
Zkoušky, pokud vypršela platnost vlastnictví. |
|
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. |
|
Prohodí dva objekty weak_ptr. |
|
Spočítá počet určený shared_ptr objekty. |
Operátory
Nahradí vlastní zdroje. |
Požadavky
Záhlaví: <paměť>
Obor názvů: std