enable_shared_from_this 实现

template<class T>
class enable_shared_from_this
{
protected:
enable_shared_from_this()
{}
enable_shared_from_this(enable_shared_from_this const &)
{}
enable_shared_from_this & operator=(enable_shared_from_this const &)
{
return *this;
}
~enable_shared_from_this()
{}
public:
shared_ptr<T> shared_from_this()
{
return weak_this_.lock();
}
weak_ptr<T> weak_from_this()
{
return weak_this_;
}
private:
mutable weak_ptr<T> weak_this_;

};

项目中使用:

class A : public enable_shared_from_this<A>

{

public:

A():mptr(new int)

{

cout << "A()" << endl;

}

~A()

{

cout << "~A()" << endl;

delete mptr;

mptr = nullptr;

}

shared_ptr<A> getSharedPtr()

{

return shared_from_this();

}

private:

int *mptr;

};

// Ptr: 普通共享指针// ConstPtr: 不可修改内容的共享指针// PtrConst: 不可修改指针的共享指针,内容可以修改// ConstPtrConst: 只能初始化的指针,不能做任何的修改动作#define SHARED_PTR_DEFINE(X) public: typedef std::shared_ptrPtr; typedef std::shared_ptrConstPtr; typedef const std::shared_ptrPtrConst; typedef const std::shared_ptrConstPtrConst; class testA : public std::enable_shared_from_this{ SHARED_PTR_DEFINE(testA);}外部调用方法;testA::Ptr 表示智能指针

(0)

相关推荐

  • 现代C一文读懂智能指针

    https://m.toutiao.com/is/JHS4MVf/ 智能指针 C++11 引入了 3 个智能指针类型: std::unique_ptr<T> :独占资源所有权的指针. st ...

  • C 11中智能指针的原理、使用、实现

    目录 理解智能指针的原理 智能指针的使用 智能指针的设计和实现 1.智能指针的作用 C 程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理.程序员自己管理堆内存可以提高了程序的 ...

  • c 11新特性之智能指针

    很多人谈到c++,说它特别难,可能有一部分就是因为c++的内存管理吧,不像java那样有虚拟机动态的管理内存,在程序运行过程中可能就会出现内存泄漏,然而这种问题其实都可以通过c++11引入的智能指针来 ...