zoukankan      html  css  js  c++  java
  • 智能指针

    template <class T>
    class SharedPtr
    {
    public:
        SharedPtr():ptr(new T()),count(new int(1)){}//无参构造
        explicit SharedPtr(T *src):ptr(str),count(new int(1)){}//有参构造
        explicit SharedPtr(T value):ptr(new T(value)),count(new int(1)){}//有参构造
    
        SharedPtr(const SharedPtr &rhs) :ptr(rhs.ptr), count(rhs.count)//拷贝构造
        {
            ++(*count);
        }
    
        SharedPtr& operator=(const SharedPtr &rhs)//赋值运算符
        {
            ++(*rhs.count);
            if (--(*count) == 0)
            {
                delete ptr;
                delete count;
            }
            ptr = rhs.ptr;
            count = rhs.count;
            return *this;
        }
    
        ~SharedPtr()
        {
            if (--(count) == 0)
            {
                delete ptr;
                delete count;
            }
        }
    
        T* get() const //获取资源
        {
            return ptr;
        }
    private:
        T *ptr;//原始指针
        int *count;//引用计数
    };
  • 相关阅读:
    ES6新特性总结
    Flask
    Flask
    Flask
    Flask
    Flask
    Flask
    Flask
    Linux
    Linux
  • 原文地址:https://www.cnblogs.com/beixiaobei/p/10914264.html
Copyright © 2011-2022 走看看