程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了这个 shared_ptr 实现正确吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决这个 shared_ptr 实现正确吗??

开发过程中遇到这个 shared_ptr 实现正确吗?的问题如何解决?下面主要结合日常开发的经验,给出你关于这个 shared_ptr 实现正确吗?的解决方法建议,希望对你解决这个 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,请注明来意。