智慧型指標share ptr 簡單剖析

2021-09-08 07:04:22 字數 1202 閱讀 1400

本文**:

話不多說直接上碼!

//shared_ptr的簡單實現版本  基於引用記數的智慧型指標  

namespace boost //空間庫boost

templateshared_ptr(y* py)

shared_ptr(constshared_ptr& r) : px(r.px)

templateshared_ptr(constshared_ptr& r)//用於 多型 :乙個介面多種實現方法

//過載

shared_ptr& operator=(const shared_ptr& r) throw()

templateshared_ptr& operator=(const shared_ptr& r)//用於多型

~shared_ptr()

void reset(t* p=0)

else

catch (...) // catch

} // allocate newreference counter

*pn = 1;

px = p;

} // reset

reference operator*()const throw()

pointer operator->()const throw()

pointer get() constthrow()

size_type use_count() constthrow()//

bool unique() const throw()//

private:

void dispose() throw()

} }; // shared_ptr

templateinline bool operator==(shared_ptrconst & l, shared_ptrconst & r)

templateinline bool operator!=(shared_ptrconst & l, shared_ptrconst & r)

}

這是它的基本實現原理,接下來來乙個它的實際例子,應用很簡單!

#include#includeusing namespace std;

class x

智慧型指標share ptr記錄

shared ptr 是乙個共享所有權的智慧型指標,允許多個指標指向同乙個物件。shared ptr 物件除了包括乙個物件的指標,還包括乙個引用計數器。當每給物件分配乙個share ptr的時候,引用計數加一 每reset乙個share ptr,或者修改物件的指向 指向其他物件或者賦值nullptr...

共享智慧型指標 SharePtr 的C 實現

主要實現思想是引用計數法,在shareptr類拷貝 copy 和賦值 的時候引用計數加1,而在shareptr類變數析構的時候引用計數減少1 1 shareptr包裹類變數指標和引用計數指標int 這裡引用計數採用 int 為了在各個shareptr變數實現計數共享,每個變數的計數變化都會影響其他計...

智慧型指標(簡單版)

include 智慧型指標,物件導向的指標。該指標可以實現自動 記憶體的功能。通過將指標交給物件來管理,物件放到棧中,棧由系統進行管理,來實現自動 功能,獨闢蹊徑,妙啊。實現該智慧型指標的主要問題在於運算子的過載上。template class smartptr smartptr t operato...