weak_ptr — Klasa
Otacza słabo połączony wskaźnik.
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 kontrolowane przez słaby wskaźnik.
Uwagi
Opisuje szablonu klasy obiektu, który wskazuje zasób, który jest zarządzany przez jedną lub więcej shared_ptr — Klasa obiektów.weak_ptr Obiektów, które wskazują na zasób nie ma wpływu na liczbę odwołań do zasobu.Tym samym, kiedy ostatni shared_ptr niszczony jest obiekt, którym zarządza zasób zasób zostanie zwolniona, nawet jeśli weak_ptr obiektów, wskazując na ten zasób.Jest to istotne dla uniknięcia cykli w strukturach danych.
A weak_ptr obiektu punktów do zasobu, jeśli została zbudowana z shared_ptr obiekt, który jest właścicielem tego zasobu, jeśli została zbudowana z weak_ptr obiekt, który wskazuje ten zasób, lub jeśli ten zasób został przydzielony do niej z weak_ptr::operator=.A weak_ptr obiektu nie zapewniają bezpośredni dostęp do zasobów, który wskazuje.Kod, który musi korzystać z zasobów czy za pomocą programu tak shared_ptr obiekt, który jest właścicielem tego zasobu, utworzone przez wywołanie funkcji członka weak_ptr::lock.A weak_ptr obiektu wygasła, gdy zasób, który wskazuje, która została zwolniona, ponieważ wszystkie shared_ptr obiektów, których właścicielem zasobu zostały zniszczone.Wywołanie lock na weak_ptr obiektu, którego ważność wygasła tworzy obiekt shared_ptr pusty.
Słaby wskaźnik weak_ptr pusty obiekt nie wskazuje żadnych zasobów i ma nie bloku sterowania.Jego funkcji członka lock zwraca obiekt shared_ptr pusty.
Cykl występuje wówczas, gdy dwóch lub większej liczby zasobów jest kontrolowana przez shared_ptr obiekty przechowują wzajemnie odwołujące się do shared_ptr obiektów.Na przykład cykliczne połączonej listy z trzech elementów ma węzła głównego N0; Ten węzeł zawiera shared_ptr obiekt, który jest właścicielem następny węzeł N1; Ten węzeł zawiera shared_ptr obiekt, który jest właścicielem następny węzeł N2; z kolei posiada tego węzła, shared_ptr obiekt, który jest właścicielem węzła głównego, N0, zamknięcie cyklu.W tej sytuacji Brak zliczanie odwołań kiedykolwiek staną się zero i węzłów w cyklu nie zostanie zwolniona.Aby wyeliminować cyklu, ostatni węzeł N2 powinien zawierać weak_ptr obiektu, wskazując N0 zamiast shared_ptr obiektu.Ponieważ weak_ptr nie jest właścicielem obiektu N0 nie wpływa na N0's odniesienie licznik i, kiedy niszczony jest program ostatniego odniesienia do węzła głównego węzłów na liście również zostaną zniszczone.
Elementy członkowskie
Konstruktorów
Tworzy weak_ptr. |
Metody
Typ elementu. |
|
Sprawdza, czy własności wygasło. |
|
Uzyskuje wyłącznego prawa własności do zasobu. |
|
Zwraca true Jeśli to weak_ptr zamówiony przed (lub mniej niż) podany wskaźnik. |
|
Wersje właścicielem zasobu. |
|
Zamień dwa weak_ptr obiekty. |
|
Zlicza liczbę wyznaczonych shared_ptr obiektów. |
Operatory
Zastępuje właścicielem zasobu. |
Wymagania
Nagłówek: <pamięć>
Przestrzeń nazw: std