shared_ptr stl

#include<bits/stdc++.h>
using namespace std;


template <typename T> 
class Smartptr{
public:
   explicit Smartptr(T* =(T*)0) ;
   Smartptr<T>& operator=(Smartptr<T>&);
   Smartptr(Smartptr<T>&);
   ~Smartptr();
   T* operator->(); 
   T&  operator*();
private:
   T* ptr;
   static map<T*,int> cou; 
};

template<typename T>
map<T*,int> Smartptr<T> :: cou;


template<typename T>
Smartptr<T>::Smartptr(T* x){
    ptr = x;
    cou[x]++;
}

template<typename T>
Smartptr<T>& Smartptr<T>::operator=(Smartptr<T>& x){
     if(x.ptr == ptr)return *this;
     cou[ptr]--;
     if(cou[x.ptr]<=0){
         delete ptr;
         ptr = 0;
     }
     ptr = x.ptr;
     cou[ptr]++;
     return *this;
}

template<typename T>
Smartptr<T>::~Smartptr(){
     if(*this.ptr){
        cou[ptr]--;
        delete ptr;
     }
}
template<typename T>
Smartptr<T>::Smartptr(Smartptr<T>& x){
     ptr = x.ptr;
     cou[ptr]++;
}

int main() {

    return 0;
}

 

原文链接: https://www.cnblogs.com/DreamKill/p/12766115.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    shared_ptr stl

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/344186

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午2:33
下一篇 2023年3月2日 上午2:34

相关推荐