zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    C#编程.异常处理(Exception Handling Statements)
    rabbitMQ 消息队列
    非技术问题
    sql优化
    数控机床,模具
    nginx 服务器
    zuul 网关
    分布式配置中心
    hystrix 解决服务雪崩效应
    负载均衡
  • 原文地址:https://www.cnblogs.com/DreamKill/p/12766115.html
Copyright © 2011-2022 走看看