C shared ptr的模擬實現

2021-10-06 10:49:05 字數 845 閱讀 9157

一、 shared_ptr的模擬實現

我在之前的部落格《智慧型指標》中有說過shared_ptr的原理,那麼這篇部落格,我們模擬實現乙個shared_ptr,讓大家能更好的理解它的原理。

include//這個標頭檔案是用來使用互斥鎖

templateclass shared_ptr

//該函式是為了對引用計數減1

void release()

pmutex->unlock(); //解鎖

if (flag == true)

delete pmutex;

} //只用來對引用計數加1

void addcount()

~shared_ptr()

//拷貝構造

shared_ptr(shared_ptr& sp)

:ptr(sp.ptr)

,pcount(sp.pcount)

,pmutex(sp.pmutex)

//賦值運算子過載

sharedptr& operator=(const sharedptr& sp)

return *this;

} private:

t* ptr; //指向被管理的資源

//引用計數雖然是存在於每乙個物件中,但是實際上它是跟隨著物件所管理的資源

//的,因此要把它設定為指標,這樣每個物件可以通過這個指標來共享同一塊空間。

//都可以對這個引用計數進行操作

int* pcount; //引用計數

mutex* pmutex; //互斥鎖

};

vector的模擬實現

上一節部落格講述了vector常見介面的使用,今天主要是對vector這些介面進行模擬實現,下面是相關 include include includeusing namespace std namespace ty iterator end citerator cbegin const citera...

list的模擬實現

list是stl標準模板庫中的乙個容器,它實質上是乙個帶頭雙向迴圈鍊錶。這樣的好處是 插入 刪除資料時,不用判斷鍊錶是否為空,並且遍歷的時候找尾也很容易,只需要用 head prev就能實現。迭代器的作用就是為了讓容器的訪問像指標一樣可以實現 解引用,以及過載 的比較符。迭代器有兩種實現方式 1.原...

bind的模擬實現

var context context window var result 判斷是否有第二個引數 if arguments 1 else delete context.fn return result var foo function bar name,age bind 方法會建立乙個新的函式。當這...