C/C++面试:手写智能指针类
发布日期:2022-03-16 03:25:34
浏览次数:13
分类:技术文章
本文共 1360 字,大约阅读时间需要 4 分钟。
templateclass SharedPtr{ public: SharedPtr() : m_ptr(nullptr) , m_count_(new size_t) { } SharedPtr(T *ptr) : m_ptr(ptr) , m_count_(new size_t) { *m_count_ = 1; } ~SharedPtr(){ --(*m_count_); if(*m_count_ == 0){ delete m_ptr; delete m_count_; m_ptr = nullptr; m_count_ = nullptr; } } //拷⻉构造函数 SharedPtr(const SharedPtr& ptr){ m_count_ = ptr.m_count_; m_ptr = ptr.m_ptr; ++(*m_count_); } //拷⻉赋值运算 void operator=(const SharedPtr& ptr){ SharedPtr(std::move(ptr)); } //移动构造函数 SharedPtr(SharedPtr && ptr) : m_ptr(ptr.m_ptr) , m_count_(ptr.m_count_) { ++(*m_count_); } // 移动赋值运算 void operator=(SharedPtr && ptr){ SharedPtr(std::move(ptr)); } // 解引⽤ T & operator*(){ return *m_ptr; } // 箭头运算 T* operator->(){ return m_ptr; } // ᯿载bool操作符 operator bool(){ return m_ptr == nullptr; } T *get(){ return m_ptr; } size_t use_count(){ return *m_count_ ; } bool unique(){ return *m_count_ == 1; } void swap(SharedPtr & ptr){ std::swap(*this, ptr); }private: size_t *m_count_; T *m_ptr;};
转载地址:https://blog.csdn.net/zhizhengguan/article/details/122621885 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年03月24日 15时07分38秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python实现推流直播
2019-04-26
你不得不了解的卷积神经网络发展史
2019-04-26
你不得不了解的机器学习知识
2019-04-26
你不得不了解的深度学习知识(一)
2019-04-26
你不得不了解的深度学习知识(二)
2019-04-26
AI算法之Encoder-Decoder 和 Seq2Seq
2019-04-26
AI算法之Attention机制
2019-04-26
人体口罩佩戴检测实战
2019-04-26
[实战]200类鸟类细粒度图像分类
2019-04-26
【实战】英文垃圾短信分类
2019-04-26
FFmpeg初遇见_基本命令
2019-04-26
Urbansound8k声音分类深度学习实战
2019-04-26
pytorch版本下的yolov3训练实现火焰检测
2019-04-26
yolov4训练自己的数据集实现安全帽佩戴检测
2019-04-26
EfficientDet训练自己的数据集实现抽烟检测
2019-04-26
【工具篇】10分钟快速上手git与github
2019-04-26
【开发篇】10分钟快速上手spring boot
2019-04-26
【开发篇】10分钟快速spring boot+react前后端分离
2019-04-26
【Leetcode刷题篇】leetcode203 移除链表元素
2019-04-26
【Leetcode刷题篇】leetcode938 二叉搜索树的范围和
2019-04-26