std::enable_shared_from_this

1. 作用

能够让一个对象(名称为t,并且被一个std::shared_ptr对象pt管理),安全生成其他额外的std::shared_ptr实例(名称为pt1、pt2),它们与pt共享t的所有权

如果一个类T继承了std::enable_shared_from_this<T>,那么T类中就有了继承自父类的成员函数shared_from_this。

当T的对象被shared_ptr对象pt管理时,调用T::shared_from_this(),将返回一个新的shared_ptr对象,并且与pt共享t的所有权;

2. 什么时候用

当一个类被智能指针shared_ptr管理时,且在类的成员中需要把当前类对象作为参数传给其他函数时,这时就需要一个指向自身的shared_ptr。

2.1 为何不直接将this指针返回?

如果函数直接将this指针返回, 并保存到某个外部变量中,当这个对象自身已经被析构时,外部的变量可能并不知道,若外部变量直接使用这个指针,将会报错;

3. 代码

相关推荐
劲镝丶1 小时前
malloc概述
c语言·开发语言·c++
努力努力再努力wz2 小时前
【C++进阶系列】:万字详解红黑树(附模拟实现的源码)
java·linux·运维·c语言·开发语言·c++
cccyi72 小时前
C/C++类型转换
c++
枫fengw2 小时前
9.8 C++
开发语言·c++
JCBP_3 小时前
QT(3)
开发语言·汇编·c++·qt·算法
XFF不秃头3 小时前
力扣刷题笔记-三数之和
c++·笔记·算法·leetcode
Pafey3 小时前
VS2022 + Qt5.9 中文乱码/项目设置utf-8编码
c++·qt·中文乱码
minji...3 小时前
C++ STL之list的使用
开发语言·c++
青草地溪水旁3 小时前
23 种设计模式
开发语言·c++·设计模式
Want5954 小时前
C/C++圣诞树②
c语言·c++·算法