簡單的實現了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...