智能指针一个简单例子
2013-04-23 15:29
501 查看
/* * The Code Project Open License (CPOL) 1.02 * */ class RC { private: int count; // Reference count public: void AddRef() { // Increment the reference count count++; } int Release() { // Decrement the reference count and // return the reference count. return --count; } }; template < typename T > class SP { private: T* pData; // pointer RC* reference; // Reference count public: SP() : pData(0), reference(0) { // Create a new reference reference = new RC(); // Increment the reference count reference->AddRef(); } SP(T* pValue) : pData(pValue), reference(0) { // Create a new reference reference = new RC(); // Increment the reference count reference->AddRef(); } SP(const SP<T>& sp) : pData(sp.pData), reference(sp.reference) { // Copy constructor // Copy the data and reference pointer // and increment the reference count reference->AddRef(); } ~SP() { // Destructor // Decrement the reference count // if reference become zero delete the data if(reference->Release() == 0) { delete pData; delete reference; } } T& operator* () { return *pData; } T* operator-> () { return pData; } SP<T>& operator = (const SP<T>& sp) { // Assignment operator if (this != &sp) // Avoid self assignment { // Decrement the old reference count // if reference become zero delete the old data if(reference->Release() == 0) { delete pData; delete reference; } // Copy the data and reference pointer // and increment the reference count pData = sp.pData; reference = sp.reference; reference->AddRef(); } return *this; } };
使用例子:
相关文章推荐
- 一个简单的智能指针实现
- 一个简单的智能指针实现
- 一个智能指针的简单实现
- 智能指针auto_ptr简单使用例子
- 智能指针原理,并实现一个简单的智能指针
- 请简述智能指针原理,并实现一个简单的智能指针。
- 模仿的智能指针的一个简单实现
- 智能指针原理,并实现一个简单的智能指针
- 一个简单的C++智能指针的实现
- 怎样管理C++类中的指针成员 和 简单的c++智能指针使用的例子
- 图灵机器人(智能云交互API)的一个java实现简单例子
- 闲来无事,写了一个简单的智能指针
- 一个简单的智能指针的实现
- 实现一个简单的智能指针
- 一个简单例子理解C语言指针
- 一个实现智能指针的例子《还不完善》
- 一个简单的智能指针的实现
- Spring入门(一个简单的例子)
- 一个可以放入STL容器的简洁、高效、非计数的智能指针实现
- 一个简单的EJB例子!!