智慧型指標:動態的管理開闢的記憶體,防止人為的記憶體洩漏。
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...