Aracılığıyla paylaş


weak_ptr Class

Zayıf bağlantılı bir işaretçi sarar.

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;
    };

Parametreler

  • Ty
    Denetlenen zayıf işaretçi türü.

Notlar

Şablon sınıfı bir veya daha fazla yönetilen bir kaynağa işaret eden bir nesneyi tanımlayan shared_ptr Class nesneler. weak_ptr Kaynağın başvuru sayısı bir kaynağa işaret eden nesneleri etkilemez. Bu nedenle, ne zaman son shared_ptr o kaynağı yöneten nesne bozulur bile kaynak uğrayıncaya weak_ptr o kaynağa işaret eden nesneler. Bu, veri yapılarını döngülerin kaçınmak için önemlidir.

A weak_ptr nesne karşı oluşturulmuş, bir kaynağa işaret eden bir shared_ptr karşı oluşturulmuş, bu kaynağın sahibi olan nesne bir weak_ptr o kaynağa işaret eden nesne veya bu kaynak için onunla atanmışsa, weak_ptr::operator=. A weak_ptr nesne için işaret eden kaynağa doğrudan erişim sağlamaz. Kaynak kullanması gereken kodu yapar böylece aracılığıyla bir shared_ptr üye işlevini çağırarak oluşturulan bu kaynağın sahibi olan nesne weak_ptr::lock. A weak_ptr nesne için işaret eden kaynak boşaltıldıktan zaman zaman aşımına tüm shared_ptr kaynağa sahip nesneleri yok. Arama lock üzerinde bir weak_ptr boş shared_ptr nesneyi doldu nesnesi oluşturur.

Boş weak_ptr nesne için herhangi bir kaynağa işaret etmiyor ve hiçbir denetim bloğu vardır. Üye işlevi lock boş shared_ptr nesneyi döndürür.

İki veya daha fazla kaynak tarafından denetlenen bir döngü oluşur shared_ptr karşılıklı başvuru nesneleri tutmak shared_ptr nesneler. Örneğin, bir dairesel bağlantılı liste üç merkez düğümü vardır N0; Bu düğüm tutan bir shared_ptr sonraki düğüme sahip olan nesneyi N1; Bu düğüm tutan bir shared_ptr sonraki düğüme sahip olan nesneyi N2; Bu düğüm, tutan bir shared_ptr sahibi merkez düğümü, nesne N0, dönüşümü kapatılıyor. Bu durumda, başvuru sayıları hiçbiri bugüne kadar sıfır olur ve düğümleri döngüsünün açılmayacaktır. Son düğümü döngüsü ortadan kaldırmak için N2 gerektiği bir weak_ptr gösteren nesne N0 yerine bir shared_ptr nesne. Bu yana weak_ptr nesnesine ait olmayan N0 bu etkilemez N0's başvuru sayısı ve merkez düğümü son başvuru programın kaldırıldığı zaman listeden düğümleri de yok edilir.

Üyeler

Bb982126.collapse_all(tr-tr,VS.110).gifOluşturucular

weak_ptr::weak_ptr

Oluşturan bir weak_ptr.

Bb982126.collapse_all(tr-tr,VS.110).gifYöntemler

weak_ptr::element_type

Öğe türü.

weak_ptr::expired

Sahipliği sona erdi sağlayıp sağlamadığını test eder.

weak_ptr::lock

Özel bir kaynak sahipliğini alır.

weak_ptr::owner_before

Döner true bu weak_ptr önce sipariş (veya az) sağlanan işaretçi.

weak_ptr::reset

Kaynak yayınları ait.

weak_ptr::swap

İki değiştirir weak_ptr nesneler.

weak_ptr::use_count

Sayıları sayısı belirlenen shared_ptr nesneler.

Bb982126.collapse_all(tr-tr,VS.110).gifİşleçler

weak_ptr::operator=

Değiştirir Kaynak ait.

Gereksinimler

Başlık: <memory>

Ad alanı: std

Ayrıca bkz.

Başvuru

shared_ptr Class

Diğer Kaynaklar

<memory> Üyeler