weak_ptr Class
Otacza słabo połączone wskaźnika.
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
Obiekt, który wskazuje zasób, która jest zarządzana przez jedną lub więcej zawiera opis klasy szablonowej shared_ptr Class obiektów.weak_ptr Obiektów, które wskazują na zasób nie wpływają na liczbę odwołań tego zasobu.Ten sposób, kiedy ostatnio shared_ptr niszczony jest obiekt, który zarządza tym zasobem zasób zostanie zwolniona, nawet jeśli nie ma weak_ptr obiektów, wskazując polecenie tego zasobu.Jest to niezbędne 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ło wykonane 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 umożliwia bezpośredniego dostępu do zasobu, który wskazuje.Za pomocą programu tak robi kod, który musi korzystać z zasobu shared_ptr obiekt, który jest właścicielem tego zasobu, utworzone przez wywołanie funkcji składowej weak_ptr::lock.A weak_ptr obiektu wygasła, po zwolnieniu zasobów, który wskazuje, 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 puste.
Obiekt pusty słaby wskaźnik weak_ptr nie wskazuje żadnych zasobów i ma nie blok sterowania.Jego funkcji składowej lock zwraca obiekt shared_ptr puste.
Cykl występuje wtedy, gdy dwóch lub większej liczby zasobów jest kontrolowana przez shared_ptr obiekty przechowują wzajemnie odwoływania 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ł posiada shared_ptr obiekt, który jest właścicielem następny węzeł N1; Ten węzeł posiada 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 takim przypadku żaden z zliczanie odwołań kiedykolwiek stanie się zero, a nie zostanie zwolniona węzłów w cyklu.Aby wyeliminować w cyklu, ostatni węzeł N2 powinien posiadać 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 programu ostatni odniesienie do węzła głównego węzłów na liście również zostaną zniszczone.
Elementy członkowskie
Konstruktory
Konstrukcje weak_ptr. |
Metody
Typ elementu. |
|
Sprawdza, czy własności wygasło. |
|
Uzyskuje wyłączną własnością firmy zasobu. |
|
Zwraca true czy to weak_ptr porządkowania przed (lub mniej niż) pod warunkiem wskaźnik. |
|
Wersje właścicielem zasobu. |
|
Zamienia miejscami dwa weak_ptr obiektów. |
|
Liczba zliczeń wyznaczone shared_ptr obiektów. |
Operatory
Zastępuje właścicielem zasobu. |
Wymagania
Nagłówek: <memory>
Obszar nazw: std
Zobacz też
Informacje
Inne zasoby
<memory> Członkowie