std::enable_shared_from_this

news/2024/12/21 23:46:54/

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


http://www.ppmy.cn/news/1240150.html

相关文章

人工智能 -- 神经网络

1、什么是神经网络 什么是人工智能&#xff1f;通俗来讲&#xff0c;就是让机器能像人一样思考。这个无需解释太多&#xff0c;因为通过各种科幻电影我们已经对人工智能很熟悉了。大家现在感兴趣的应该是——如何实现人工智能&#xff1f; 从1956年夏季首次提出“人工智能”这…

Java串行化接口详解

引言 在 Java 开发中&#xff0c;我们经常需要将对象进行序列化和反序列化&#xff0c;以便在网络传输或存储到持久化介质中。Java 提供了一种机制&#xff0c;即通过实现 Serializable 接口来实现对象的串行化。本文将详细介绍 Java 串行化接口的用法和原理&#xff0c;以及一…

lv11 嵌入式开发 GPIO实验 9

目录 1 简介 1.1 GPIO 2 LED实验步骤 2.1 通过电路原理图分析LED的控制逻辑 2.2 通过电路原理图查找LED与Exynos4412的连接关系 2.3 通过数据手册分析GPIO中哪些寄存器可以控制LED 2.4 通过程序去操控对应的寄存器完成对LED的控制 2.4.1 使用寄存器写入…

Linux shell编程学习笔记29:shell自带的 脚本调试 选项

Linux shell脚本的调试方法比较多&#xff0c;上次我们探讨和测试了shell内建命令set所提供的一些调试选项&#xff0c;其实 shell 本身也提供了一些调试选项。我们以bash为例来看看。 1 bash 的命令行帮助信息&#xff08;bash --help&#xff09; purleEndurer csdn ~ $ ba…

软件测试 | MySQL 主键约束详解:保障数据完整性与性能优化

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

数据结构与算法编程题24

中序遍历非递归算法 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 #define Maxsize 100 #define STR_SIZE 1024typedef struct BiTNode {ElemType data;BiTNode* lchild, * rchild; }B…

Python武器库开发-前端篇之CSS基本语法(三十)

前端篇之CSS基本语法(三十) CSS简介 CSS&#xff08;层叠样式表&#xff09;是一种用于描述网页外观和布局的样式表语言。它与 HTML 一起&#xff0c;帮助开发者对网页进行美化和布局。CSS通过定义网页元素的颜色、字体、大小、背景、边框等属性&#xff0c;使网页变得更加美…

开源语音大语言模型来了!阿里基于Qwen-Chat提出Qwen-Audio!

论文链接&#xff1a;https://arxiv.org/pdf/2311.07919.pdf 开源代码&#xff1a;https://github.com/QwenLM/Qwen-Audio 引言 大型语言模型&#xff08;LLMs&#xff09;由于其良好的知识保留能力、复杂的推理和解决问题能力&#xff0c;在通用人工智能&#xff08;AGI&am…