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。 |
方法
項目的型別。 |
|
測試,如果擁有權過期。 |
|
取得資源的獨佔擁有權。 |
|
傳回 true ,如果這個 weak_ptr 在 (或小於) 提供的指標之前已排序。 |
|
版本資源。 |
|
交換兩個 weak_ptr 物件。 |
|
指定 shared_ptr 物件的數目。 |
運算子
表單取代特定資源。 |
需求
標頭: <memory>
命名空間: std