c++ enable shared from this

是一种允许在对象内部,得到(shared_ptr自身)的方法。有几点需要注意:

对于:
class MyClass :public enable_shared_from_this< MyClass>{……};
总结:
1,不可以在MyClass的构造函数中使用shared_from_this(),因为父类的弱针指成员还没有被初始化。
2,对象直接在栈上或堆上构建,也是不能使用shared_from_this()的,因为常规的构造,不会初始化-父类的弱指针,原理同上。
3,如果要安全使用shared_from_this(),对象生存至始至终必须由shared_ptr管理,第一个shared_ptr将负责初始化那个父类的弱指针。花了一下午的时间才搞清楚,
4,使用shared_from_this()得到的智能指针,显然不是这个对象的第一个智能指针。
用到的技术c++SFINAE:http://blog.csdn.net/u012442719/article/details/55000048
以下来自于boost library1.63.0,代码作了简化,
以下是图片,如果看不清楚,请使用ctrl+鼠标滚轮:

这里写图片描述
这里写图片描述
这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值