Udostępnij za pośrednictwem


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

weak_ptr::weak_ptr

Tworzy weak_ptr.

Metody

weak_ptr::element_type

Typ elementu.

weak_ptr::expired

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

weak_ptr::lock

Uzyskuje wyłącznego prawa własności do zasobu.

weak_ptr::owner_before

Zwraca true Jeśli to weak_ptr zamówiony przed (lub mniej niż) podany wskaźnik.

weak_ptr::reset

Wersje właścicielem zasobu.

weak_ptr::swap

Zamień dwa weak_ptr obiekty.

weak_ptr::use_count

Zlicza liczbę wyznaczonych shared_ptr obiektów.

Operatory

weak_ptr::operator=

Zastępuje właścicielem zasobu.

Wymagania

Nagłówek: <pamięć>

Przestrzeń nazw: std

Zobacz też

Informacje

shared_ptr — Klasa

Inne zasoby

<memory> Członkowie