類模板
<memory>

std::shared_ptr

template <class T> class shared_ptr;
共享指標
管理指標的儲存,提供有限的垃圾回收機制,可能與其他物件共享該管理。

物件shared_ptr型別具有擁有指標的能力,並共享該所有權:一旦它們獲得所有權,指標的擁有者組將負責在最後一個釋放該所有權時刪除它。

shared_ptr物件在自身被銷燬時,或在它們的數值透過賦值操作或顯式呼叫shared_ptr::reset改變時,立即釋放對它們共同擁有的物件的擁有權。一旦所有shared_ptr共享指標所有權的

物件都已釋放此所有權,則託管物件將被刪除(通常透過呼叫::delete,但可以在構造時指定不同的刪除器)。

shared_ptr

物件只能透過複製其值來共享指標所有權:如果兩個shared_ptr是從相同的(非shared_ptr)指標構造(或建立)的,它們將都擁有該指標而不共享它,當其中一個釋放它(刪除其託管物件)而留下另一個指向無效位置時,會造成潛在的訪問問題。

此外,shared_ptr

物件可以共享指標的所有權,同時又指向另一個物件。這種能力稱為別名(請參閱建構函式),通常用於在擁有物件的同時指向成員物件。因此,一個shared_ptr

可能關聯到兩個指標

  • 一個儲存的指標,即它所說的指向的指標,以及它用operator*解引用的指標
  • 一個擁有的指標(可能共享),即所有權組負責在某個時候刪除的指標,以及它將其計為使用的指標。

通常,儲存的指標擁有的指標指向同一個物件,但別名shared_ptr

物件(那些用別名建構函式及其副本構造的物件)可能指向不同的物件。

一個shared_ptr

不擁有任何指標的

稱為shared_ptr。一個shared_ptr

指向任何物件的

稱為空指標shared_ptr,並且不應被解引用。但請注意,一個shared_ptr

不一定是一個空指標shared_ptr,一個空指標shared_ptr

不一定是一個shared_ptr.

shared_ptr

物件透過運算子*->來提供對它們指向的物件的訪問,從而複製了有限的指標功能。出於安全原因,它們不支援指標算術。

一個相關的類weak_ptr,能夠與shared_ptr物件共享指標,而不擁有它們。


模板引數

T
被管理物件的型別,別名為成員型別element_type.

成員型別

以下別名是...的成員型別shared_ptr.

成員型別定義說明
element_type模板引數(T)被管理物件的型別

成員函式


非成員函式

過載:

特定函式:

另見