std:weak_ptr 用法小结。

2023-11-01

http://blog.csdn.net/coolmeme/article/details/43266319 

参考了这篇博客,感谢博主的贡献,感谢博主的翻译。不过他写的太多了,我只是记录一下使用方法,原理就不深究了。需要了解其原理的可以自行去那篇博客学习。

仅供学习参考。。

定义:

std::weak_ptr一般是通过std::shared_ptr来构造的。当std::shared_ptr初始化std::weak_ptr时,std::weak_ptr就指向了相同的地方,但它不改变所指对象的引用计数。 这是的构造指初始化它。。。

你所需要的是一个原子操作来检查std::weak_ptr是否过期,如果没过期则提供对所指对象的访问。可以通过从std::weak_ptr构造std::shared_ptr。。这里的构造指获得一个不过期的sharedptr

第一种方式:

std::weak_ptr::lock,它返回一个std::shared_ptr。如果std::weak_ptr失效,则std::shared_ptr为空。

第二种方式:

另一种形式是把std::weak_ptr作为参数来构造std::shared_ptr。这样,如果std::weak_ptr失效的话,则会抛异常:

std::shared_ptr<Widget> spw3(wpw); // if wpw's expired,   
                                                            // throw std::bad_weak_ptr

注意:

1.使用std::weak_ptr来指向可能悬浮的std::shared_ptr一样的指针。

2.可能使用std::weak_ptr的情况包括缓存,观察模式中的观察者列表,以及防止std::shared_ptr环路。



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

std:weak_ptr 用法小结。 的相关文章

随机推荐

  • ChatGLM-6B微调,P-Tuning,LoRA,Full parameter

    官方教程 ChatGLM 6B 微调 P Tuning LoRA Full parameter 哔哩哔哩 bilibili我们详细介绍了GLM的技术背景 以及ChatGLM 6B的微调方案 包括P tuning LoRA Full Para
  • innodb简单优化

    innodb flush log at trx commit sync binlog 双1标准 innodb flush log at trx commit 1 sync binlog 1 innodb flush log at trx c
  • 怎么在网页中添加一个AI机器人且点击后还会讲话

    效果如下 该页面是本人参加人工智能比赛的一个项目页面展示 页面可以悬浮一个机器人 鼠标点击他就能够智能语音播报 目前只能通过360浏览器访问 等参加完比赛再写具体实现步骤 如有需要源码可以评论联系本人
  • 量化投资学习-32:每一波调整的本质

    在每一轮牛市中 都会经历大致三波的上涨 每一波上涨中间都会经历1 2个月的时间调整 调整的深度在20 左右 为什么经历这种调整的 调整的目的是什么 常听到的观点就是 涨久了 就会跌 调制的目的是洗盘 洗掉浮筹 为了后期更好的上涨 所以散户最
  • gw在计算机网络里面_GW 是什么意思?

    GW是Gateway的英文缩写 即网关 又称网间连接器 协议转换器 网关在网络层以上实现网络互连 是最复杂的网络互连设备 仅用于两个高层协议不同的网络互连 网关既可以用于广域网互连 也可以用于局域网互连 是一种充当转换重任的计算机系统或设备
  • Tone Mapping中luma滤波(降噪)对噪声放大的定性分析

    Tone Mapping中luma滤波对噪声放大的定性分析 在tone mapping过程中 通常经过统计之后得到一条mapping曲线 记这条曲线为 f x f x f x mapping过程中 对于给定的点 假定其亮度为
  • Oracle GoldenGate 将 SQLServer 数据实时同步到 ORACLE

    Oracle GoldenGate 简称 OGG 使在不同关系型数据库之间能进行实时同步复制可谓非常强大 OGG 支持 oracle sql server mysql db2 Sybase 等关系数据库直接的数据复制 OGG 这种灵活特性能
  • 计算机网络基础知识总结

    计算机网络学习的核心内容就是网络协议的学习 网络协议是为计算机网络中进行数据交换而建立的规则 标准或者说是约定的集合 因为不同用户的数据终端可能采取的字符集是不同的 两者需要进行通信 必须要在一定的标准上进行 一个很形象地比喻就是我们的语言
  • Arduino学习模拟输出

    1 实现效果 通过两个按键可以控制led变亮或者变暗 boolean pushButton1 定义布尔型变量存储按键1的状态 boolean pushButton2 定义布尔型变量存储按键2的状态 int ledPin 9 LED引脚号 i
  • Python3 面向对象

    Python从设计之初就已经是一门面向对象的语言 正因为如此 在Python中创建一个类和对象是很容易的 本章节我们将详细介绍Python的面向对象编程 如果你以前没有接触过面向对象的编程语言 那你可能需要先了解一些面向对象语言的一些基本特
  • 数据库备份和恢复

    这里介绍两种方法 1 mysqldump mysqldump不需要登录到数据库中就可以备份和恢复库和表 1 备份 mysqldump uroot p 123123 mytest gt mnt mytest bak date F sql 注意
  • Django学习 day4

    今天学习了简单的用户登录界面 也是对template的简单初探 Django有个叫模板 Template 的东东 可以直接把你的Html代码写在模板里 返回给浏览器 模板初探 使用模板的两个步骤 配置存html文件的模板目录 在你的view
  • html5期末大作业课程设计仿苹果官网(源码+报告)

    页面展示 下面有下载地址 免费哦 链接 https pan baidu com s 1 5ZDXVZmM64ALY2i31Hwfg 提取码 vtrk 一 需求分析 设计目的 一 可行性分析 时代背景 根据中国互联网络信息中心 CNNIC 在
  • 【教程】电信光猫烽火HG5140A怎么改桥接模式,telecomadmin超级密码

    一 背景 坐标杭州 宽带移机 师傅给我换了个战未来的 支持万兆的光猫 以前我是依据型号网上搜索搞到超级管理员用户就行桥接的 给我换了这个新光猫后 自己死活折腾不出来 二 正文 以前大家都习惯用超级管理员进入光猫 改桥接模式 利用光猫的安全漏
  • libevent中event_base_loopbreak与BEV_OPT_DEFER_CALLBACKS

    最近用C 和libevent改写了一个多线程网络服务器应用 大体框架是前端一个tcp连接监听线程 接收到连接后将socket随机交给一个后台工作线程做进一步处理 所有的线程均使用event base loop事件循环 其中有这样一个需求 我
  • Flink实战: 窗口TopN分析与实现1

    Flink实时计算topN热榜 主要思路可以这样做 可以继续优化的地方有 1 最后的processFunction中注册定时器在processElement方法中就要将ListState存储换掉 换成ValueState 不过是List类型
  • 最小二乘法曲线拟合

    最小二乘法曲线拟合以及Matlab实现 在实际工程中 我们常会遇到这种问题 已知一组点的横纵坐标 需要绘制出一条尽可能逼近这些点的曲线 或直线 以进行进一步进行加工或者分析两个变量之间的相互关系 而获取这个曲线方程的过程就是曲线拟合 目录
  • rtplib在linux上的编译安装

    JRTPlib简介 在http www tekuba net program 10 中提到过RTP的例程 这里参考网络上的资料给出JRtpLIB的嵌入式arm环境以及桌面环境开发环境的建立 RTP 是目前解决流媒体实时传输问题的最好办法 要
  • sql注入手法详解

    sql定义 sql 结构化查询语句 sql注入 首先我们通过前端将我们的payload 恶意代码 传送到后台服务器 传送到后台以后 我们提交的payload拼接到sql语句中 作为sql语句的一部分被执行 从而导致数据库又被脱库甚至删库的风
  • std:weak_ptr 用法小结。

    http blog csdn net coolmeme article details 43266319 参考了这篇博客 感谢博主的贡献 感谢博主的翻译 不过他写的太多了 我只是记录一下使用方法 原理就不深究了 需要了解其原理的可以自行去那