這裡的**測試有效,具體說明看注釋就可以了!
如果有錯誤或者不當之處還請批評指出,謝謝!
/* shared_ptr實現原理示意 */
templateclass mshared_ptr
mshared_ptr(t *obj) : _ptr(obj), _pcount(new int(0))
~mshared_ptr() }
/* 拷貝建構函式不能有返回型別 */
mshared_ptr(const mshared_ptr& ptr)
/* 返回值是為了支援【obj = obj1 = obj2】這種形式 */
mshared_ptr& operator= (const mshared_ptr& ptr)
/* 獲取資料指標 */
t* get()
/* 使用儲存物件的成員 */
t* operator->()
t& operator*()
/* bool運算子過載*/
operator bool()
/* 獲取引用計數值 */
int use_count()
private:
t* _ptr;
int* _pcount;
};
測試**:
struct test
;void func(mshared_ptrobj)
int main(int argc, char *ar**)
shared ptr智慧型指標
智慧型指標是乙個行為類似指標的物件。我們在使用堆記憶體時,都需要及時地進行釋放,避免造成記憶體洩漏。但我們偶爾也會忘記將其釋放掉,從而造成記憶體洩漏。並且,在釋放的時候,我們可能對某乙個指標進行了重複釋放,導致程式崩潰的問題。為了能夠解決這些問題,從而有了智慧型指標的設計。智慧型指標一共有四種,分別...
shared ptr(智慧型指標)
只要將 new 運算子返回的指標 p 交給乙個 shared ptr 物件 託管 就不必擔心在 寫delete p語句 實際上根本不需要編寫這條語句,託管 p 的 shared ptr 物件在消亡時會自動執行delete p。而且,該 shared ptr 物件能像指標 p 樣使用,即假設託管 p ...
智慧型指標shared ptr
shared ptr在脫離自己的作用域時候,會自動呼叫析構函式。作用域包含 塊 被呼叫函式 main函式等。include include include include using namespace std class a a int n private int n string str voi...