C++ 中 shared_from_this()的原理与使用

devtools/2024/12/23 0:24:50/

什么是shared_from_this()?

它是一个模板类,定义在头文件 <memory>,其原型为:

template< class T > class enable_shared_from_this;

std::enable_shared_from_this能让其一个对象(假设其名为 t ,且已被一个std::shared_ptr对象 pt 管理)安全地生成其他额外的std::shared_ptr实例(假设名为 pt1, pt2, … ),它们与 pt 共享对象 t 的所有权。
例如:若一个类 T 继承自 std::enable_shared_from_this<T> ,则 T 类中有继承自父类的成员函数: shared_from_this 。 当 T 类的对象 t 被一个为名为 pt 的 std::shared_ptr 类对象管理时,调用 T::shared_from_this 成员函数,将会返回一个新的 std::shared_ptr 对象,它与 pt 共享 t 的所有权。


http://www.ppmy.cn/devtools/35518.html

相关文章

Django REST Framework框架

Django REST Framework框架 【1】概述 Django REST Framework&#xff08;简称DRF&#xff09;是基于Django Web框架的一个开源的Web API框架。它提供了一组用于快速构建Web API的工具和库&#xff0c;包括序列化器、认证、权限、视图、路由和文档化等功能。 DRF的主要特点包括…

git--.gitignore--使用/详解/实例

简介 本文介绍git的.gitignore忽略文件的用法。 项目中并不是所有文件都需要保存到版本库中的&#xff0c;例如“target”目录及目录下的文件就可以忽略。 忽略某个文件&#xff08;不提交到版本库的方法&#xff09;&#xff1a;在Git工作区的根目录下创建一个.gitignore文件…

redis数据结构

redis优势 Redis是缓冲中间件,是C语言编写的基于内存的高速缓存数据库,key-value存储系统结构,包含丰富的数据类型,string,list,set,zset,hash Redis中提供很多功能 缓存&#xff0c;事件发布或订阅&#xff0c;高速队列等场景丰富数据结构用于直接存取基于内存速度快可持久…

链式队列基本操作

链式队列的基本概念 链式队列是一种常见的数据结构&#xff0c;它使用链表作为其底层数据存储结构。链式队列的特点是动态的内存分配&#xff0c;可以有效地处理队列的入队和出队操作。下面&#xff0c;我将介绍链式队列的实现方法&#xff0c;并提供相应的C语言代码示例。 链…

代码本地化

目的 代码本地化&#xff08;Localization&#xff09;是指将软件应用程序中的文本、图形、声音和其他内容翻译成特定语言的过程&#xff0c;同时确保这些内容在目标文化中适当地呈现。本地化不仅仅是对文本进行翻译&#xff0c;还包括对日期、时间、数字、货币、排序顺序、文本…

yolov8训练自己的数据集

截至我的知识更新日期&#xff08;2023年&#xff09;&#xff0c;YOLOv8 并不是一个已经公开发布的模型。YOLO&#xff08;You Only Look Once&#xff09;系列中最新的稳定版本是 YOLOv7&#xff0c;由 Ultralytics 团队开发。如果在此之后 Ultralytics 或其他团队发布了 YOL…

[redis] redis为什么快

1. Redis与Memcached的区别 两者都是非关系型内存键值数据库&#xff0c;现在公司一般都是用 Redis 来实现缓存&#xff0c;而且 Redis 自身也越来越强大了&#xff01;Redis 与 Memcached 主要有以下不同&#xff1a; (1) memcached所有的值均是简单的字符串&#xff0c;red…

Java解决最后一个单词长度

Java解决最后一个单词长度 01 题目 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1&#xff1a; 输入&#xff1a;s "Hel…