C 實現智慧型指標

2021-10-04 09:07:46 字數 736 閱讀 8683

#include

#include

using

namespace std;

// 智慧型指標自我實現

template

<

typename t>

class

myautoptr

myautoptr

(const myautoptr& ptr)

myautoptr&

operator=(

const myautoptr& ptr)if(

this

->_ptr)

}this

->_ptr = ptr._ptr;

this

->_count = ptr._count;(*

this

->_count)++;

return

*this;}

~myautoptr()

} t*

operator

->()

t&operator*(

)int

get_count()

};void

main()

程式執行結果:

1

22

由於智慧型指標指向的物件可能同時也被其它的指標指向,因此智慧型指標類內增加乙個count成員用來表示當前被指向的物件一共有多少個指標正在指向它。

C 智慧型指標實現

1 問題的提出 先看下面的例子 class ctext ctext private int m ptr int funtext 在函式funtext 中,類的兩個物件共用了new出來的指標ptr。當函式執行開始時,呼叫兩次建構函式 退出執行時,呼叫兩次析構函式,而在第一次呼叫時已經delete pt...

智慧型指標實現C

include using namespace std template class shared ptrelse shared ptr const shared ptr ptr shared ptr operator const shared ptr ptr if this ptr this pt...

C 實現智慧型指標

c 11增加了智慧型指標 shared ptr unique ptr weak ptr 為了加深理解,自己實現智慧型指標 我們都知道shared ptr的核心思想通過引用計數來管理記憶體 先實現單個指標的自我管理,看下面 template class ref ref t p m ptr p ref ...