boost中的shared_ptr的问题

__Cm_duck __Cm_duck 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include <iostream>
using namespace std;

class D: public boost::enable_shared_from_this<D>
{
public:
D()
{
cout<<"D::D()"<<endl;
}

void func()
{
cout<<"D::func()"<<endl;
boost::shared_ptr<D> p = shared_from_this();
}
};

int main()
{
boost::shared_ptr<D> p(new D);
p->func();
return 0;
}
网上解释:
这里 boost::shared_ptr<D> d(new D) 实际上执行了 3 个动作:首先调用 enable_shared_from_this<D> 的构造函数;其次调用 D 的构造函数;最后调用 shared_ptr<D> 的构造函数。是第 3 个动作设置了 enable_shared_from_this<D> 的 weak_ptr 。
这个地方是很违背 c++ 常理和逻辑的,必须小心。

我想知道第三个动作是怎么设置了 enable_shared_from_this<D> 的 weak_ptr?详细点,网上的资料看了很多,这里还是不懂。还有就是求推荐一本学习boost的书籍,谢谢
...全文
评论 2
收藏 已收藏
分享
返回顶部
__Cm_duck
C++ 语言 65,214 成员 250,514 内容