模拟实现shared_ptr
来源:互联网 发布:网络渠道销售授权书 编辑:程序博客网 时间:2024/05/01 05:01
template<typename T>class my_SharedPtr{public: my_SharedPtr(T* ptr = NULL); ~my_SharedPtr(); my_SharedPtr(my_SharedPtr<T>& ptr); my_SharedPtr<T>& operator=(my_SharedPtr<T>& ptr);private: T* _ptr; int* _pCount;};template<typename T>my_SharedPtr<T>::my_SharedPtr(T* ptr = NULL):_ptr(ptr){ if (NULL != ptr) { _pCount = new int(1); }}template<typename T>my_SharedPtr<T>::~my_SharedPtr(){ if (--(*_pCount) == 0) { delete _ptr; delete _pCount; _ptr = NULL; _pCount = NULL; }}template<typename T>my_SharedPtr<T>::my_SharedPtr(my_SharedPtr<T>& ptr):_ptr(ptr._ptr),_pCount(ptr._pCount){ if (ptr._pCount != NULL) ++(*_pCount);}template<typename T>my_SharedPtr<T>& my_SharedPtr<T>::operator=(my_SharedPtr<T>& ptr){ if (ptr._ptr != _ptr) { if (NULL == _ptr) { _ptr = ptr._ptr; _pCount = ptr._pCount; } else { if (--(*_pCount) == 0) { delete _ptr; delete _pCount; } _ptr = ptr._ptr; _pCount = ptr._pCount; } if (NULL != _pCount) ++(*_pCount); } return *this;}
0 0
- 模拟实现shared_ptr
- 模拟实现shared_ptr
- 智能指针:模拟实现auto_ptr,scoped_ptr,shared_ptr
- 模拟实现auto_ptr、scoped_ptr、shared_ptr等智能指针
- 智能指针的模拟实现 auto_ptr scoped_ptr shared_ptr
- shared_ptr 实现
- shared_ptr 实现
- shared_ptr模拟代码
- 智能指针(模拟实现auto_ptr,shared_ptr,scooeptr 以及定制删除器c++ 实现)
- 模拟 C++11 的shared_ptr
- 智能指针的模拟实现shared_ptr 循环引用 定置删除器
- 【C++】智能指针的作用,模拟实现auto_ptr,scoped_ptr,shared_ptr,scoped_array,shared_array
- boost shared_ptr实现浅析
- shared_ptr 的简单实现
- c++ shared_ptr指针实现
- shared_ptr简单实现
- boost::shared_ptr 分析与实现
- boost::shared_ptr 分析与实现
- codeforces 621E Wet Shack and blocks dp+矩阵幂优化!
- python 组织菜谱
- centos7 foxit reader占用CPU过高问题解决方案
- Android_JNI实例
- VMware Workstation的网络及虚拟编辑器
- 模拟实现shared_ptr
- Linux日志管理+ last lastlog lastb
- 修改vm屏幕与centos屏幕不匹配
- 模拟实现scoped_ptr
- Windows平台使用Gitblit搭建Git服务器图文教程
- MySQL再学笔记_00
- 朴素贝叶斯算法原理及Spark MLlib调用实例(Scala/Java/Python)
- Java Static
- 指针定义完整步骤(连上一篇野指针)