智能指針對比

智能指針對比:
(1)、boost::shared_ptr<T>  -- 基於引用計數器refcount(原子的)
<1>、構造函數中refcount+1,析構函數中refcount-1,當refcount的值減到爲0時,該對象就會被銷燬。
<2>、解決循環引用的問題:與weak_ptr<T>一起使用。weak_ptr<T>只引用不計數。
<3>、能做STL容器中的元素

(2)、boost::scoped_ptr<T>  -- 離開作用域自動析構 -- 獨享控制權

<1>、獨享控制權 -- 禁止拷貝構造和賦值的
一個scoped_ptr指針只能指向一個對象。

<2>、不能做STL容器中的元素
scoped_ptr(scoped_ptr const &) = delete;
scoped_ptr &operator=(scoped_ptr const &) = delete;

因爲STL容器中的push_back()需要使用scoped_ptr的operator=()函數.


(3)、std::unique_ptr<T>  -- 離開作用域自動析構 -- 獨享控制權
<1>、獨享控制權 -- 禁止拷貝構造和賦值的
一個unique_ptr指針只能指向一個對象。

<2>、不能做STL容器中的元素
unique_ptr(unique_ptr const &) = delete;
unique_ptr &operator=(unique_ptr const &) = delete;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章