智能指针 shared_ptr 简易实现
2021/8/29 23:08:16
本文主要是介绍智能指针 shared_ptr 简易实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
template <typename T> class shared_ptr { private: int* count; // 引用计数,不同shared_ptr指向同一引用计数 T* ptr; // 模板指针ptr,不同shared_ptr指向同一对象 public: // 构造函数 shared_ptr(T* p) : count(new int(1)), ptr(p) {} // 复制构造函数,引用计数+1 shared_ptr(shared_ptr<T>& other) : count(&(++* other.count)), ptr(other.ptr) {} T* operator->() return ptr; T& operator*() return *ptr; // 赋值操作符重载 shared_ptr<T>& operator=(shared_ptr<T>& other) { ++* other.count; // 如果原shared_ptr已经指向对象 // 将原shared_ptr的引用计数-1,并判断是否需要delete if (this->ptr && -- *this->count==0 ) { delete count; delete ptr; } // 更新原shared_ptr this->ptr = other.ptr; this->count = other.count; return *this; } // 析构函数 ~shared_ptr() { // 引用计数-1,并判断是否需要delete if (-- * count == 0) { delete count; delete ptr; } } // 获取引用计数 int getRef() return *count; };
这篇关于智能指针 shared_ptr 简易实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide