智慧型指標實現C

2021-08-30 19:42:42 字數 823 閱讀 8336

#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->_ptr = ptr._ptr;

this->_count = ptr._count;

(*this->_count)++;

return *this;

}t& operator*()

t* operator->()

~shared_ptr()

}size_t use_count()

};int main(){

shared_ptrsp(new int(130));

coutcoutsp1 = sp2;

cout《智慧型指標功能說明:

智慧型指標類將乙個計數器與類指向的物件相關聯,引用計數跟蹤該類有多少個物件共享同一指標。每次建立類的新物件時,初始化指標並將引用計數置為1;當物件作為另一物件的副本而建立時,拷貝建構函式拷貝指標並增加與之相應的引用計數;對乙個物件進行賦值時,賦值操作符減少左運算元所指物件的引用計數(如果引用計數為減至0,則刪除物件),並增加右運算元所指物件的引用計數;呼叫析構函式時,建構函式減少引用計數(如果引用計數減至0,則刪除基礎物件)。智慧型指標就是模擬指標動作的類。所有的智慧型指標都會過載 -> 和 * 操作符。智慧型指標還有許多其他功能,比較有用的是自動銷毀。這主要是利用棧物件的有限作用域以及臨時物件(有限作用域實現)析構函式釋放記憶體。

C 智慧型指標實現

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

C 實現智慧型指標

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

C 實現智慧型指標

include include using namespace std 智慧型指標自我實現 template typename t class myautoptr myautoptr const myautoptr ptr myautoptr operator const myautoptr ptr...