enable_shared_from_this介绍
在使用boost库时,经常会遇到enable_shared_from_this,这个类有什么用呢,在c++ std里,也有这个类,先来看看std中关于enable_shared_from_this的解释:
派生自的对象enable_shared_from_this
可以使用shared_from_this
成员函数中的方法来创建与现有所有者共享所有权的实例的shared_ptr
所有者。否则,如果使用this创建新的shared_ptr,则它与现有shared_ptr
所有者不同,这可能导致无效引用或导致对象被多次删除。
这种解释可能有点难懂,来看一个例子, 下面有一个Test类,他的成员函数getptr使用this创建新的shared_ptr实例:
#include <memory>
#include <iostream>
class Test
{
public:
std::shared_ptr<Test> getptr()
{
//通过this来new一个新的shared_ptr
return std::shared_ptr<Test>(this);
}
~Test()
{
std::cout << "Test::~Test() called" << std::endl;
}
};
int main()
{
std::shared_ptr<Test> sp1(new Test());
std::shared_ptr<Test> sp2 = sp1-&