智能指针

Posted beixiaobei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能指针相关的知识,希望对你有一定的参考价值。

 

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;//引用计数
};

 

以上是关于智能指针的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 vscode 的代码片段,以便在自动完成后自动触发 vscode 的智能感知?

更新:C++ 指针片段

片段中的 EditText 上的空指针异常 [重复]

智能指针和异常

Android系统的智能指针(轻量级指针强指针和弱指针)的实现原理分析

查找由智能指针引起的内存泄漏