共用方式為


weak_ptr 類別

包裝弱式連結的指標。

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

參數

  • Ty
    弱式指標控制項型別。

備註

樣板類別描述指向資源由一或多個 shared_ptr 類別 物件處理的物件。 weak_ptr 物件之資源的該點不會影響資源的參考計數。 因此,在中,當處理該資源終結的最後一個 shared_ptr 物件的資源會被釋放,,即使這個 weak_ptr 的物件對該資源。 這會避免在資料結構的循環很重要。

對資源的 weak_ptr 目標點,如果是從擁有該資源的 shared_ptr 物件建構時,則為,如果是從指向該資源的 weak_ptr 物件建構時,或者,如果該資源指派與 weak_ptr::operator=。 weak_ptr 物件不提供對它所指向的資源的直接存取。 程式碼必須使用資源可以擁有該資源的 shared_ptr 物件,這樣做會藉由呼叫 weak_ptr::lock成員函式。 weak_ptr 物件已過期,當它所指向的資源時已經釋放,由於所有 shared_ptr 物件中擁有資源被終結。 呼叫在過期建立空白 shared_ptr 物件之 weak_ptr 物件的 lock 。

空的 weak_ptr 物件未指向任何資源並沒有控制區塊。 它的成員函式 lock 傳回空白 shared_ptr 物件。

shared_ptr 物件,表示控制項的兩個以上的資源保留交互參考 shared_ptr 物件,循環發生。 例如,具有三個項目的循環連結清單有端節點 N0;該節點物件所擁有的下一個節點的 shared_ptr 物件,則為 N1;該節點物件所擁有的下一個節點的 shared_ptr 物件,則為 N2;該節點,接著,保留擁有前端節點的 shared_ptr 物件,則為 N0,關閉循環。 在這種情況下,計算參考都不會變成零,因此,在循環的節點不會被釋放。 若要排除循環,最後一個節點 N2 應該保留指向 N0 而非 shared_ptr 物件的 weak_ptr 物件。 因為 weak_ptr 物件沒有 N0 並不會影響 N0 參考計數,,和,在終結物件前端節點的程式最後的參考也會終結清單中的節點。

成員

建構函式

weak_ptr::weak_ptr

建構 weak_ptr。

方法

weak_ptr::element_type

項目的型別。

weak_ptr::expired

測試,如果擁有權過期。

weak_ptr::lock

取得資源的獨佔擁有權。

weak_ptr::owner_before

傳回 true ,如果這個 weak_ptr 在 (或小於) 提供的指標之前已排序。

weak_ptr::reset

版本資源。

weak_ptr::swap

交換兩個 weak_ptr 物件。

weak_ptr::use_count

指定 shared_ptr 物件的數目。

運算子

weak_ptr::operator=

表單取代特定資源。

需求

標頭: <memory>

命名空間: std

請參閱

參考

shared_ptr 類別

其他資源

<memory> 成員