博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为什么要使用boost::enable_shared_from_this<T>
阅读量:5116 次
发布时间:2019-06-13

本文共 809 字,大约阅读时间需要 2 分钟。

#include <boost/enable_shared_from_this.hpp>

class Test : public boost::enable_shared_from_this<Test>

{

  // ......
};

boost::shared_ptr<Test> tt(new Test);

上面定义的Test类派生自boost::enable_shared_from_this<T>,获取Test类的shared_ptr的语句如上,和使用不派生自boost::enable_shared_from_this<T>的类的方式一样。那么为什么还要使用派生自boost::enable_shared_from_this<T>的类呢?

考虑以下情况,你如果你知道类Test的指针p,你怎么获得指向p的shared_ptr呢,没有办法。但是如果Test类派生自boost::enable_shared_from_this<T>,你可以通过以下语句获得指向p指向的对象的shared_ptr。

boost::shared_ptr<Test> t(p->shared_from_this());

除了以上说的优点以及继承后的类会比不继承的类额外占一些空间外,继承自boost::enable_shared_from_this<T>的类使用shared_ptr的方式和没有继承自boost::enable_shared_from_this<T>类的使用方式完全相同。

笔者没有看boost::enable_shared_from_this<T>的实现,猜测继承自该类的类,如本例子中的Test类,相当于多了一个类似boost::weak_ptr<Test>的成员变量。具体是不是这样请参考源代码实现。

转载于:https://www.cnblogs.com/kouchengkun/p/4307501.html

你可能感兴趣的文章
15.外键
查看>>
评论列表显示及排序,个人中心显示
查看>>
【Spark】SparkStreaming-如何使用checkpoint
查看>>
JS与JQ合并对象
查看>>
算术表达式嵌套
查看>>
SOAP1.1 VS SOAP1.2
查看>>
Geotrellis系列文章链接
查看>>
Buildings 分类: ACM 多校 ...
查看>>
使用用WCF中的双工(Duplex)模式将广告图片推送到每个Winform客户端机子上
查看>>
KEIL, MDK 关于C99结构体变量初始化
查看>>
mysql备份
查看>>
[Windows Server 2008] 404错误设置方法
查看>>
PyQt5笔记(01) -- 创建空白窗体
查看>>
HDU 2686 Matrix(最大费用流)
查看>>
Deep Learning Papers
查看>>
Unity MVC框架 StrangeIoC
查看>>
iOS真机UI调试利器——Reveal
查看>>
xlrd读取多个excel电子表数据
查看>>
为什么Word文档无响应,Word文档无响应的解决方法
查看>>
main主函数
查看>>