boost::scoped_ptr特點:
boost::scoped_ptr的實現和std::auto_ptr非常類似,都是利用了乙個棧上的物件去管理乙個堆上的物件,從而使得堆上的物件隨著棧上的物件銷毀時自動刪除。不同的是,boost::scoped_ptr有著更嚴格的使用限制——不能拷貝。這就意味著:boost::scoped_ptr指標是不能轉換其所有權的。
不能轉換所有權
boost::scoped_ptr所管理的物件生命週期僅僅侷限於乙個區間(該指標所在的"{}"之間),無法傳到區間之外,這就意味著boost::scoped_ptr物件是不能作為函式的返回值的(std::auto_ptr可以)。
不能共享所有權
這點和std::auto_ptr類似。這個特點一方面使得該指標簡單易用。另一方面也造成了功能的薄弱——不能用於stl的容器中。
不能用於管理陣列物件
由於boost::scoped_ptr是通過delete來刪除所管理物件的,而陣列物件必須通過deletep來刪除,因此boost::scoped_ptr是不能管理陣列物件的,如果要管理陣列物件需要使用boost::scoped_array類。
它的常用操作如下:
成員函式
功能operator
*()
以引用的形式訪問所管理的物件的成員
operator
->()
以指標的形式訪問所管理的物件的成員
reset()
釋放所管理的物件,管理另外乙個物件
swap(scoped_ptr& b)
交換兩個boost::scoped_ptr管理的物件
class testsample
; ~testsample()
; void printsomething()
;private:
int num = 0;
};int _tmain(int argc, _tchar* argv)
輸出:
testsample constructor...!
testsample printsomething...
testsample destructor...!
請按任意鍵繼續. . .
scoped_array說明:
接受陣列指標new
智慧型指標 scoped ptr
scoped ptr scoped ptr是乙個類似auto ptr的智慧型指標,它包裝了new操作符在堆上分配的動態物件,能夠保證動態建立的物件在任何時候都可以被正確的刪除。特徵 scoped ptr的所有權不能轉讓。操作函式 scoped ptr的建構函式接受乙個型別為t 的指標p,建立出乙個s...
智慧型指標ScopedPtr
防拷貝的兩個條件 1 保護限定符 類外無法定義 2.顯示進行宣告 不進行宣告,系統將會自動生成預設的,是淺拷貝 這種方法簡單,粗暴。不讓使用拷貝構造和賦值運算子過載,你進行使用會編譯錯誤 如下 templateclass scopedptr scopedptr protected scopedptr...
Boost智慧型指標 scoped ptr
boost scoped ptr和std auto ptr非常類似,是乙個簡單的智慧型指標,它能夠保證在離開作用域後物件被自動釋放。下列 演示了該指標的基本應用 include include include class implementation void do something void t...