C++ 原始指针、shared_ptr、unique_ptr分别在什么场景下使用

2023-11-14

开发中一直萦绕我的一个困惑是:智能指针和原始指针什么场景怎么用?

现在终于有了答案:

2020-03-22 增加了unique_ptr指针的使用

1 智能指针天生负责对象生命期管理;所以生命期对象全都由unique_ptr和shared_ptr来管理。

2 原始指针天生不负责对象生命周期管理,这时候使用shared_ptr来传递动态对象和使用原始指针来传递动态对象本质上没有区别,为了简单还是传递原始指针更好一些。

下面是示例代码:注释里写清楚了使用的场景

class T3;
class T2;
class T1;

class A
{
	T3* m_t2;//创建和释放都由A之外的代码管理,A只负责(借用)使用;业务逻辑上保证A在使用m_t2指向的对象的时候,对象始终是存在的
	shared_ptr<T2> m_t2;//由加载程序创建m_t2指向的对象,执行时,交给A来管理,涉及动态对象的管理权的交接
	unique_ptr<T1> m_t1;//A管理该对象的生命周期,A的构造函数构造m_t1, A的析构函数释放m_t1;
};

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 原始指针、shared_ptr、unique_ptr分别在什么场景下使用 的相关文章

  • 贪心算法原理及其应用

    概述 贪心算法应该算是那种 只闻其声不见其人 的算法 我们可能在好多地方都会听到贪心算法这一概念 并且它的算法思想也比较简单就是说算法只保证局部最优 进而达到全局最优 但我们实际编程的过程中用的并不是很多 究其原因可能是贪心算法使用的条件比
  • 学习Kali的笔记

    2022 4 15 查看当前使用的Shell类型 usr bin zsh 可以看到我们使用是zsh类型的shell centos7 使用的是bash类型的shell zsh功能更强 而且zsh完全兼容bash的用法和命令 配置apt命令在线
  • yolov5代码解读-dataset

    前言 下两篇 yolov5代码解读 网络架构 yolov5代码解读 训练 代码已上传到github 数据集和权重文件已上传到百度网盘 链接在github里 如需下载请移步 https github com scc max yolov5 sc
  • 理解密码学中的双线性映射

    回顾 什么是群 一 定义 定义1 设G是定义了一个二元运算 的集合 如果这个运算满足下列性质 1 封闭性 如果a和b都属于G 则a b也属于G 2 结合律 对于G中的任意元素a b和c 都有 a b c a b c 成立 3 单位元 G中存
  • 【华为OD】

    华为OD试题注意事项 使用合适的编程语言 在华为OD机试中多数情况下使用C 或Java 按照题目要求进行编码 仔细阅读题目描述并理解要求 在编码前可以进行伪代码编写或画流程图有助于理解和排除逻辑错误 注意代码的规范性 注重代码的可读性和可维
  • linux启动和停止springboot项目的命令

    1 启动命令 nohup java jar dingding function 0 0 1 SNAPSHOT jar gt catalina out 2 gt 1 2 命令详解 nohup 不挂断地运行命令 退出帐户之后继续运行相应的进程
  • Accessors are only available when targeting ECMAScript 5 and higher 错误提示

    来到这里 说明聪明又勤快的你 一定是在学习JavaScript的超大集群Typescript 幸幸苦苦写完代码 运行结果如下 error TS1056 Accessors are only available when targeting
  • 码云实战(一)——idea实现将本地的项目推送到码云上

    文章目录 前言 一 创建本地仓库并关联 二 将项目提交本地仓库 三 关联远程仓库 3 1 创建空白的远程库 四 推送到远程仓库 五 验证是否推送成功 总结 前言 本系列文章主要记录日常使用中碰到的码云的相关问题 一 创建本地仓库并关联 用I
  • Pandas知识点-详解聚合函数agg

    Pandas知识点 详解聚合函数agg Pandas提供了多个聚合函数 聚合函数可以快速 简洁地将多个函数的执行结果聚合到一起 本文介绍的聚合函数为DataFrame aggregate 别名DataFrame agg aggregate
  • 计算机共享打印怎么设置密码,共享打印机需要密码的解决方法

    Q 共享打印机 客户机访问主机计算机提示输入账户和密码如何解决 A 造成是此问题的原因是主机电脑安全级别较高造成的 在主机电脑按照以下方法调整即可解决 1 Windows XP 点击 开始 控制面板 WINDOWS防火墙 列外 将 文件和打
  • Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect

    Session 0x0 for server null unexpected error closing socket connection and attempting reconnect 错误原因 zookeeper没有正常启动 为了避
  • Linux系统下PORT端口引脚导出GPIO对应的序号关系

    文章首发于同名微信公众号 DigCore 欢迎关注同名微信公众号 DigCore 及时获取最新技术博文 PORT端口中的引脚序号与GPIOx的对应关系 GPIOx P 32 N P PORTA 0 PORTB 1 PORTC 2 N PA0
  • 聊一聊fastjson

    文章目录 一 新手引导 1 什么是fastjson 2 fastjson的优点 2 1 速度快 2 2 使用广泛 2 3 测试完备 2 4 使用简单 2 5 功能完备 三 源码分析 3 1JSON toJSONString 3 1 1调用J
  • 使用OpenCASCADE绘制线束的基本操作

    使用OpenCASCADE绘制线束的基本操作 在OpenCASCADE中 绘制线束是一个常见的操作 下面我们将介绍OpenCASCADE中绘制线束的基本命令 以及相应的源代码 创建导向线 要在OpenCASCADE中创建导向线 可以使用以下
  • vscode卡顿优化设置

    点击左上角 文件 首选项 设置 1 向Microsoft发送使用情况 搜索关键词 telemetry 2 搜索索引 搜索关键词 search exclude 搜索是VSCode最耗费内存的活动之一 它必须保留所有文件及其内容的索引 您可能不
  • 渗透信息收集步骤(简约版)

    第一步 域名的信息收集 1 whois信息查询 备案信息查询 相关查询地址 天眼查 https www tianyancha com ICP备案查询网 http www beianbeian com 国家企业信用信息公示系统 http ww
  • 互联网情报屋

    社交领域 微信 手机 QQ 新浪微博 陌陌等 在线游戏 腾讯 奇虎 360 昆仑 在线视频 优酷 土豆 爱奇艺 PPS 乐视 迅雷看看 在线娱乐 YY 9158 招聘 51job 智联招聘 下载工具 迅雷 QQ旋风 网盘 金山快盘 360云
  • THE MNIST DATABASE of handwritten digits

    The MNIST database of handwritten digits available from this page has a training set of 60 000 examples and a test set o
  • FL Studio 20汉化补丁及详细激活使用说明/fl studio21怎么设置中文?

    音乐在人们心中的地位日益增高 近几年音乐选秀的节目更是层出不穷 喜爱音乐 创作音乐的朋友们也是越来越多 音乐的类型有很多 好比古典 流行 摇滚等等 对新手友好程度基本上在首位 电音类制作支持仅次于Ableton Push 调用音色和素材很方
  • 第五站:入门级小白易上手JavaScript

    第五站 入门级小白易上手JavaScript 文章目录 第五站 入门级小白易上手JavaScript 复习Web标准 三位好基友 什么是JavaScript 让我们开启JavaScript的奇妙冒险 引入JavaScript 让魔法生效 内

随机推荐

  • 如何下载安装jdk

    1 下载jdk 在oracle官网中下载jdk https www oracle com https www oracle com 按照如下流程依次点击 下载自己喜欢的版本即可 2 安装jdk 3 配置环境变量 新建 gt 变量名 JAVA
  • Web存储

    目录 什么是 HTML5 Web 存储 方法 cookie webStorage 会话存储 sessionStorage 本地存储localStorage 什么是 HTML5 Web 存储 使用HTML5可以在本地存储用户的浏览数据 早些时
  • Node.js连接MySQL连接池解决自动断开问题

    1 为什么要使用连接池 自己将node 写的api接口 部署服务器时 发现运行一段时间后 会查询不到数据库里的内容 通过自己百度发现到了自己没有关闭数据库 默认数据库可以保持连接一段时间 之后 就会断开连接 2 连接池如何使用 const
  • UA分享

    之前自架短地址服务搜集到的UA 感觉很乱没法分析 看看大佬们有没有兴趣 Mozilla 5 0 Linux U Android 4 4 2 zh cn GT I9500 Build KOT49H AppleWebKit 537 36 KHT
  • Opencl入门Demo

    最近负责的几个项目需要使用opencl进行编程 进行了学习 并将学习后编写的主要Demo代码记录下来 供大家初步入门使用 opencl的介绍 原理等这里就不说了 百度一下有很多 直接切入主题 这个demo实现两个数组的相加操作 1 进行平台
  • 初探BlockChain——哈希和电子签名

    昨天在B站学习到北京大学肖臻老师的 区块链技术与应用 的公开课 感到豁然开朗 BlockChain涉及到密码学的两个方面 哈希和电子签名 1 哈希 有计算机基础的童鞋都比较清楚其机制 这里再简单说一下其基本原理 哈希的意思就是引入随机数量的
  • 一对一和一对多的关联查询(该实体类中存在实体类属性和实体类集合属性,将关联的实体类详细信息查询出来,但没有查询所有该实体类信息)

    一 高级查询 高级查询主要是一对一查询 一对多查询 多对多查询 1 一对一查询 有用户和订单两个表 用户对订单是1对1查询 也就是订单中有一个外键是指向用户的 先创建实体类 User java public class User priva
  • c语言文件的方式写通讯录,用c语言多文件编写1000人的通讯录

    实现一个通讯录 通讯录可以用来存储1000个人的信息 每个人的信息包括 姓名 性别 年龄 电话 住址 提供方法 1 添加联系人信息 2 删除指定联系人信息 3 查找指定联系人信息 4 修改指定联系人信息 5 显示所有联系人信息 6 清空所有
  • Redis —— 设置密码

    文章目录 Redis 设置密码 简介 需要修改两处 1 命令行进入Redis进行密码修改 2 修改Redis配置 redis conf 修改后重启redis Redis 设置密码 简介 没有密码 设置密码 需要修改两处 1 命令行进入Red
  • linux添加硬盘扫描

    查看host个数 ls sys class scsi host 重新扫描 echo gt sys class scsi host host编号 scan 可以形成脚本 也可以设置别名 简化操作
  • cmake获取当前编译器的类型与版本

    在使用cmake编译程序的时候 如何获取当前使用的编译器的类型 例如是clang 还是gcc cmake提供了很多相关的编译参数 可以查看当前使用的编译器的类型 当前使用的c 编译器 message CMAKE CXX COMPILER C
  • LLVM源码调试

    一 编译LLVM debug版本 调试LLVM代码需要基于debug版本 编译LLVM时 将build type设为Debug即可 cmake DCMAKE BUILD TYPE Debug 二 GDB调试 调试OPT reference
  • Linux下磁盘分区与扩容

    虚拟机增加磁盘进行磁盘分区 查看磁盘情况 root localhost df 查看设备 root localhost ls dev sd 增加磁盘 root localhost ls dev sd 找到对应增加的设备 假设增加的sdb ro
  • 【2】Qt的MainWindow的能看不能吃的框架 以及 添加图片资源

    就是加上菜单栏 窗口 这些东西 而且没做回调函数 没有做button 所以h文件没有改动 mainwindow cpp include mainwindow h include
  • selenium爬取药监总局

    url http 125 35 6 84 81 xk from selenium import webdriver from lxml import etree from time import sleep page text list d
  • python 复杂表达式

    复杂表达式 使用for循环的迭代不仅可以迭代普通的list 还可以迭代dict 假设有如下的dict d Adam 95 Lisa 85 Bart 59 完全可以通过一个复杂的列表生成式把它变成一个 HTML 表格 tds tr td s
  • LeetCode·每日一题·1177. 构建回文串检测·前缀和

    作者 小迅 链接 https leetcode cn problems can make palindrome from substring solutions 2309940 qian zhui he zhu shi chao ji xi
  • Jina Hub:一站式神经搜索系统组件分享平台

    Hub 是 Jina 全家桶中非常重要的一个成员 本期推文我们将详细介绍 Hub 的相关内容 在过往推文中 我们介绍过 高度适配深度学习任务的可扩展数据结构 DocArray 开源神经搜索框架 Jina 神经搜索系统结果调优工具 Finet
  • 嵌入式Web项目(二)——CGI的引入

    文章目录 静态网页工作原理 动态网页工作原理 CGI的概念 CGI工作原理 boa配置静态文件与CGI文件访问路径 静态文件 CGIPath 动态网页 以shell语言 实现动态网页案例 第一次访问测试 第二次测试 C语言测试 静态网页工作
  • C++ 原始指针、shared_ptr、unique_ptr分别在什么场景下使用

    开发中一直萦绕我的一个困惑是 智能指针和原始指针什么场景怎么用 现在终于有了答案 2020 03 22 增加了unique ptr指针的使用 1 智能指针天生负责对象生命期管理 所以生命期对象全都由unique ptr和shared ptr