智慧型指標scoped_ptr原始碼剖析
以下為簡化後的原始碼實現…
#include
#include
#include
#include
using
namespace
std;
//scoped_ptr 指向乙個物件,死活不肯交出資源佔有權(私有的複製建構函式和賦值運算子),除非你和我一樣(swap())
//scoped_ptr 指向乙個物件,我想指向另乙個物件(reset()),我也不能便宜了別人,我把原來的物件析構掉
//scoped_ptr我指向乙個auto_ptr指向物件也是可以滴,但是auto_ptr你該滾蛋了...
template
class scoped_ptr
explicit scoped_ptr( std::auto_ptr
p ) : px( p.release() )
//析構函式
~scoped_ptr()
//reset函式功能讓當前指標指向另乙個物件,並將原來的物件析構掉
void reset(t * p = 0)
t & operator*() const
t * operator->() const
t * get() const
//交換兩個指標的指向
void swap(scoped_ptr & b)
};//外部函式,交換兩個指標的指向
template
inline
void swap(scoped_ptr& a, scoped_ptr& b)
int main()
智慧型指標 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...