如果一个类的对象被shared_ptr管理着,然后该类的某个成员函数需要返回一个指向该对象本身的shared_ptr,该怎么实现呢?
#include <memory>
#include <iostream>
using namespace std;
class A
{
public:
shared_ptr<A> getSharedPtr()
{
return shared_ptr<A>(this);
}
~A()
{
cout << "Destruct A" <<endl;
}
};
int main()
{
shared_ptr<A> sp1(new A());
shared_ptr<A> sp2 = sp1->getSharedPtr();
cout << "sp1.use_count() = " << sp1.use_count() << endl;
cout << "sp2.use_count() = " << sp2.use_count() << endl;
return 0;
}
运行程序输出:
sp1.use_count() = 1
sp2.use_count() = 1
Destruct A
Destruct A异常退出
可见通过shared_ptr<A>(this)这种方式虽然返回了一个shared_ptr对象,但