C++ boost庫智能指針(一):scoped_ptr 與 scoped_array

        智能指針是C++11更新以後一直很熱門的技術,這重點區分了C與C++,智能指針給C++程序員的內存管理帶來了便利,同時也有風險,用不好容易翻車。

        boost提供了6種智能指針,scoped_ptr,  scoped_array,shared_ptr,shared_array,weak_ptr, intrusive_ptr, 如下圖

        本篇主要介紹前兩個.

一、scoped_ptr       

      scoped_ptr 是一個很類似 auto_ptr/unique_ptr 的智能指針,它包裝了new操作符在堆上分配的動態對象,能夠保證動態創建的對象在任何時候都可以被正確地刪除。相對於std::auto_ptr,  scoped_ptr對指針的管理權更加嚴格,不能轉讓,有點像引用,一指向了,就不能變方向。一旦 scoped_ptr 獲取了對象的管理權,我們就無法再從它那裏取回來。
       從源碼中,可以找到答案,這是因爲在scoped_ptr內部對拷貝,賦值做了私有化:

template<class T> class scoped_ptr // noncopyable
{
private:

    T * px;

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