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. 代码

相关推荐
委婉待续16 分钟前
Qt的学习(二)
c++·qt
nenchoumi31191 小时前
UE5 学习系列(一)创建一个游戏工程
c++·学习·游戏·ue5
温宇飞1 小时前
C++ 作用域和标识符查找规则详解
c++
随意0231 小时前
STL 1 容器
开发语言·c++
cpp加油站2 小时前
拒绝切换IDE,10分钟让Trae编辑器化身C++神器,智能补全、编译调试一网打尽
c++·ai编程·trae
啊我不会诶2 小时前
篮球杯软件赛国赛C/C++ 大学 B 组补题
c语言·c++
l1t2 小时前
DeepSeek辅助实现的DuckDB copy to自定义函数
数据库·c++·人工智能
Bardb4 小时前
01__C++入门
c++·qt
weixin_457665395 小时前
C++11新标准
开发语言·c++
奔跑吧邓邓子6 小时前
解锁Vscode:C/C++环境配置超详细指南
c语言·c++·vscode·配置指南