對智慧型指標shared ptr的簡單模擬和實現

2021-10-02 01:58:23 字數 785 閱讀 6485

這裡的**測試有效,具體說明看注釋就可以了!

如果有錯誤或者不當之處還請批評指出,謝謝!

/* 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...