智慧型指標的簡單實現

2021-07-12 02:19:53 字數 1348 閱讀 7451

智慧型指標:動態的管理開闢的記憶體,防止人為的記憶體洩漏。

sharedptr的實現:

原理:使用引用計數的原理使多個物件可以指向一塊空間。

#define  _crt_secure_no_warnings

#includeusing namespace std;

template class sharedptr

sharedptr( t* ptr)

:_count(new int(1)), _ptr(ptr)

{}sharedptr( sharedptr& ptr)

:_ptr(ptr._ptr), _count(ptr._count)

sharedptr& operator= ( sharedptr& ptr)

else

_ptr = ptr._ptr;

++(*_count);

}return *this;

}~sharedptr()

else

}t* operator->()

t& operator*()

int getcount()

void print()

private:

int* _count;

t* _ptr;

};void test()

int main()

scopedptr的實現:

scopedptr實現原理:防止拷貝構造和賦值運算子的過載。

templateclass scopedptr

~scopedptr()

}scopedptr* operator->()

scopedptroperator*()

private:

t* _ptr;

scopedptr& operator=(const scopedptr& s);

scopedptr(const scopedptr& s);

};int main()

autoptr的實現:

原理:一塊空間只能讓乙個物件指著。

templateclass autoptr

autoptr(autoptr& s)

autoptr& operator=(autoptr& s)

_ptr = s._ptr;

s._ptr = null;}}

~autoptr()

}autoptroperator*()

autoptr& operator->()

private:

t* _ptr;

};int main()

本文出自 「fun」 部落格,請務必保留此出處

智慧型指標的簡單實現

智慧型指標 它的一種通用實現方法是採用引用計數的方法。智慧型指標將乙個計數器與類指向的物件相關聯,引用計數跟蹤共有多少個類物件共享同一指標。有兩種實現方法,本例簡單的實現了智慧型指標。include include using namespace std template class smartpt...

c 實現簡單的智慧型指標

rt,參考了 stl msvc 中shard ptr的實現,基本原理是引用計數,利用ref cnt類來管理記憶體,在shared ptr建立時建立,此後shared ptr僅是在拷貝複製析構的過程中對引用進行修改,個人覺得比較有意思的乙個地方在於通過對ref cnt類多型的應用使得shared pt...

智慧型指標實現

namespace smart smart count 增加引用計數,並返回計數值.intaddref 減少引用計數,並返回計數值.intrelease private 計數變數.intuse count 智慧型指標.template class t class smart ptr 構造空指標.ex...