Udostępnij za pośrednictwem


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

Bb982126.collapse_all(pl-pl,VS.110).gifKonstruktory

weak_ptr::weak_ptr

Konstrukcje weak_ptr.

Bb982126.collapse_all(pl-pl,VS.110).gifMetody

weak_ptr::element_type

Typ elementu.

weak_ptr::expired

Sprawdza, czy własności wygasło.

weak_ptr::lock

Uzyskuje wyłączną własnością firmy zasobu.

weak_ptr::owner_before

Zwraca true czy to weak_ptr porządkowania przed (lub mniej niż) pod warunkiem wskaźnik.

weak_ptr::reset

Wersje właścicielem zasobu.

weak_ptr::swap

Zamienia miejscami dwa weak_ptr obiektów.

weak_ptr::use_count

Liczba zliczeń wyznaczone shared_ptr obiektów.

Bb982126.collapse_all(pl-pl,VS.110).gifOperatory

weak_ptr::operator=

Zastępuje właścicielem zasobu.

Wymagania

Nagłówek: <memory>

Obszar nazw: std

Zobacz też

Informacje

shared_ptr Class

Inne zasoby

<memory> Członkowie