大佬教程收集整理的这篇文章主要介绍了这个 shared_ptr 实现正确吗?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试构建一个与 std::shared_ptr 相同的类只是为了学习和改进我的思维方式,我希望你能告诉我这个实现是否正确并且是否有效预期与否?
非常感谢任何帮助。
提前感谢您的帮助。
#include <iostream>
#include <map>
using namespace std;
template<typename dataType>
class shared_ptr
{
public:
shared_ptr()
{
ID++;
internalID = ID;
countMap[ID] = 1;
ptr = new dataType();
}
shared_ptr(shared_ptr& a)
{
this->ptr = a.ptr;
this->internalID = a.internalID;
countMap[internalID]++;
}
voID operator=(shared_ptr& a)
{
this->ptr = a.ptr;
this->internalID = a.internalID;
countMap[internalID]++;
}
~shared_ptr()
{
countMap[internalID]--;
if(countMap[internalID]==0)
{
delete ptr;
countMap.erase(internalID);
}
}
private:
static int id;
int internalID = 0;
static map<int,int> countMap;
dataType* ptr;
};
template<typename dataType>
int shared_ptr<dataType>::ID = 1;
template<typename dataType>
map<int,int> shared_ptr<dataType>::countMap;
int main()
{
{
shared_ptr<int> sp1;
{
shared_ptr<int> sp3;
shared_ptr<int> sp4(sp3);
shared_ptr<int> sp5;
sp5 = sp4;
}
shared_ptr<int> sp2(sp1);
}
return 0;
}
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的这个 shared_ptr 实现正确吗?全部内容,希望文章能够帮你解决这个 shared_ptr 实现正确吗?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。