C 智慧型指標unique ptr的簡單實現

2021-09-28 21:23:05 字數 758 閱讀 3204

簡單的實現了unique_ptr,包括如下成員函式:

template

<

typename t>

class

uniqueptr

~uniqueptr()

public

:void

reset

(t* presource)

// 先釋放資源(如果持有), 再持有資源

t*release()

// 返回資源,資源的釋放由呼叫方處理

t*get()

// 獲取資源,呼叫方應該只使用不釋放,否則會兩次delete資源

public

:operator

bool()

const

// 是否持有資源

t&operator*(

) t*

operator

->()

private

:void

del(

)private

:uniqueptr

(const uniqueptr &)=

delete

;// 禁用拷貝構造

uniqueptr&

operator=(

const uniqueptr &)=

delete

;// 禁用拷貝賦值

private

: t *m_presource;

};

c 智慧型指標 unique ptr

智慧型指標是基於raii機制實現的類 模板 具有指標的行為 過載了operator 與operator 操作符 可以 智慧型 地銷毀其所指物件。c 11中有unique ptr shared ptr與weak ptr等智慧型指標,可以對動態資源進行管理 unique ptr 唯一 擁有其所指物件,同...

C 智慧型指標 unique ptr

unique ptr 唯一 擁有其所指物件,同一時刻只能有乙個unique ptr指向給定物件 通過禁止拷貝語義 只有移動語義來實現 unique ptr指標本身的生命週期 從unique ptr指標建立時開始,直到離開作用域。離開作用域時,若其指向物件,則將其所指物件銷毀 預設使用delete操作...

C 智慧型指標 unique ptr

unique ptr和auto ptr類似。但是unique ptr擁有它指向的物件。某個時刻只能有乙個unique ptr指向乙個給定物件。當unique ptr被銷毀時,它所指向的物件也被銷毀。必須採用直接初始化形式 不能呼叫賦值或拷貝建構函式,避免了兩個指標指向同一塊位址的問題,避免了auto...