template <class T> class shared_ptr;
物件都已釋放此所有權,則託管物件將被刪除(通常透過呼叫::delete,但可以在構造時指定不同的刪除器)。
shared_ptr
物件只能透過複製其值來共享指標所有權:如果兩個shared_ptr是從相同的(非shared_ptr)指標構造(或建立)的,它們將都擁有該指標而不共享它,當其中一個釋放它(刪除其託管物件)而留下另一個指向無效位置時,會造成潛在的訪問問題。
此外,shared_ptr
物件可以共享指標的所有權,同時又指向另一個物件。這種能力稱為別名(請參閱建構函式),通常用於在擁有物件的同時指向成員物件。因此,一個shared_ptr
可能關聯到兩個指標
物件(那些用別名建構函式及其副本構造的物件)可能指向不同的物件。
一個shared_ptr
不擁有任何指標的
稱為空shared_ptr。一個shared_ptr
指向任何物件的
稱為空指標shared_ptr,並且不應被解引用。但請注意,一個空shared_ptr
不一定是一個空指標shared_ptr,一個空指標shared_ptr
不一定是一個空shared_ptr.
shared_ptr
物件透過運算子*和->來提供對它們指向的物件的訪問,從而複製了有限的指標功能。出於安全原因,它們不支援指標算術。
一個相關的類weak_ptr,能夠與shared_ptr物件共享指標,而不擁有它們。
成員型別 | 定義 | 說明 |
---|---|---|
element_type | 模板引數(T) | 被管理物件的型別 |