智慧型指標scoped ptr原始碼剖析

2021-06-29 10:30:34 字數 862 閱讀 6921

智慧型指標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...