【C++11能用智能指針】
shared_ptr
是一引用計數 (reference-counted) 指針,其行為與一般 C++ 指針即為相似。在 TR1 的實現中,缺少了一些一般指針所擁有的特色,像是別名或是指針運算。C++11新增前述特色。
一個 shared_ptr
只有在已經沒有任何其它 shared_ptr
指向其原本所指向對象時,才會銷毀該對象。
一個 weak_ptr
指向的是一個被 shared_ptr
所指向的對象。該 weak_ptr
可以用來決定該對象是否已被銷毀。weak_ptr
不能被解參考; 想要訪問其內部所保存的指針,只能通過 shared_ptr
。有兩種方法可達成此目的。第一,類型 shared_ptr
有一個以 weak_ptr
為參數的構造函數。第二,類型weak_ptr
有一個名為 lock
的成員函數,其返回值為一個 shared_ptr
。weak_ptr
並不擁有它所指向的對象,因此不影響該對象的銷毀與否。
底下是一個 shared_ptr
的使用樣例:
參考:http://zh.wikipedia.org/wiki/C++0x#.E9.80.9A.E7.94.A8.E6.99.BA.E8.83.BD.E6.8C.87.E9.87.9D