c++11智慧型指標
auto_ptr智慧型指標
unique_ptr智慧型指標
shared_ptr智慧型指標
**如下
auto_ptr智慧型指標
template
class autoptr
~autoptr()
}//管理權轉移問題
autoptr
(autoptr
& sp)
//拷貝構造
:_ptr
(sp._ptr)
autoptr
& operator=
(autoptr
& sp)
//賦值
//管理權轉移
_ptr = sp._ptr;
sp._ptr = nullptr;
}return
*this;
} t& operator*()
t *operator->()
private:
t *_ptr;
};
unique_ptr智慧型指標
template
class uniqueptr
~uniqueptr()
} t& operator*()
t* operator->()
//防拷貝和賦值,所以把拷貝和賦值操作置為delete
uniqueptr
(const uniqueptr
& up)
= delete;
uniqueptr& operator=
(const uniqueptr
& up)
= delete;
private:
t *_ptr;
};
shared_ptr智慧型指標
template
class sharedptr
~sharedptr()
}sharedptr
(const sharedptr
&sp)
//拷貝
:_ptr
(sp._ptr)
,_usecount
(sp._usecount)
,_mtx
(sp._mtx)
sharedptr& operator=
(const sharedptr
& sp)
//賦值
_ptr = sp._ptr;
_usecount = sp._usecount;
_mtx = sp._mtx;
addref()
;}return
*this;
}int
getusecount()
intaddref()
intsunref()
private:
t* _ptr;
int*_usecount;
//引用計數
mutex *_mtx;
deletor _del;
};
C 11智慧型指標
本文介紹c 的四種智慧型指標,其中後三種是c 11新增加的,auto ptr已被棄用。要編譯c 11,需要安裝g 4.8 sudo add apt repository ppa ubuntu toolchain r test sudo apt get update sudo apt get inst...
c 11 智慧型指標
如果在程式中使用new從堆 自由儲存區 分配記憶體,等到不需要時,應使用delete將其釋放。c 引入了智慧型指標auto ptr,以幫助自動完成這個過程。c 11摒棄了auto ptr,並新增了三種智慧型指標 unique ptr,shared ptr,weak ptr。一.auto ptr,un...
c 11 智慧型指標
首先來看shared ptr,先貼一小部分vs2013裡的實現 template class shared ptr template class shared ptr public ptr base ty template explicit shared ptr ux px template cla...