一、weak_ptr概述:weak_ptr辅助shared_ptr进行工作

weak“弱",反义词”强“

强值得就是shared_ptr,弱指的就是weak_ptr;

weak_ptr:也是类模板,也是个智能指针。这个智能指针指向一个由shared_ptr管理的对象,但是weak_ptr不控制指向对象的生存期。

换句话来说,将weak_ptr绑定到shared_ptr上并不会改变shared_ptr的引用计数(更确切的说,weak_ptr的构造和析构不会增加或减少所指对象的引用技术)

当shared_ptr需要释放所指定对象的时候照常释放,不管是否有weak_ptr指向该对象。weak意思是”弱“

能力弱(弱共享/弱引用:共享其他的shared_ptr所指向的对象),控制不了所指对象的生命期

这个弱引用(weak_ptr)的作用:大家可以立即成监视shared_ptr(强引用)的生命周期用的,是一种对shared_ptr的扩充。

weak_ptr不是一种独立的智能指针,不能用来操作所指向的资源,所以它看起来像一个shared_ptr的助手(旁观者)这种感觉

weak_ptr能够监视到它所指向的对象是否存在

1.1weak_ptr的创建

#include <iostream>
#include <memory>using namespace std;int main() {// 我们创建weak_ptr的时候,一般是用一个shared_ptr来初始化auto pi = make_shared<int>(100); // shared_ptrweak_ptr<int> piw(pi);// piw弱共享pi,pi引用计数(强引用计数)不改变,但是弱引用计数会从变1)// 强引用技术才能决定对象的生命期;弱引用技术对对象生命期没有影响weak_ptr<int> piw2;piw2 = pi; // pi是一个shared_ptr,赋值给一个weak_ptr,两者指向同一个内存对象weak_ptr<int> piw3;piw3 = piw2; // 把weak_ptr赋给另外一个weak_ptr,现在pi是一个强引用,piw和piw2,piw3是两个弱引用cout << pi.use_count() << endl;pi.reset();// 因为pi是唯一指向该对象的强引用智能指针,所以reset会释放pi所指向的对象,同时将pi置空auto pi2 = piw.lock(); // pi2是一个shared_ptrif (pi2 != nullptr) {*pi2 = 12;} else {cout << "很遗憾,lock()失败" << endl;}// 总结:weak_ptr能够判断所指向的对象是否存在,这种能力return 0;
}

weak_ptr概述,weak_ptr常用操作、尺寸相关推荐

  1. Spark SQL概述,DataFrames,创建DataFrames的案例,DataFrame常用操作(DSL风格语法),sql风格语法

    一. Spark SQL 1. Spark SQL概述 1.1. 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作 ...

  2. JavaScript之基础-9 JavaScript String(内置对象、String概述、字符串常用操作、模式匹配)...

    一.JavaScript 内置对象 内置对象 - 什么是内置对象? 内置对象就是ECMAScript标准中已经定义好的,由浏览器厂商已经实现的标准对象 - 内置对象中封装了专门的数据和操作数据常用的A ...

  3. CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念)、早期/中期/近期应用领域(偏具体应用)、经典CNN架构(偏具体算法)概述、常用工具/库/框架/产品、环境安装、常用数据集、编程技巧

    CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念).早期/中期/近期应用领域(偏具体应用).经典CNN架构(偏具体算法)概述.常用工具/库/框架/产品.环境安装.常用数据集.编程技巧 ...

  4. ETL流程概述及常用实现方法

    ETL是英文Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract).转换(transform).加载(load)至目的端的过程.常见于数据仓库开发中将数 ...

  5. X86汇编语言从实模式到保护模式11:指令格式及操作尺寸

    目录 1. 80286的16位保护模式 1.1 80286寄存器 1.2 80286段描述符 1.3 80286保护模式内存访问 2. 指令操作尺寸 2.1 指令操作尺寸的概念 2.2 16位处理器的 ...

  6. Android /iPhone/iPad UI之常用图标尺寸规范

    整合的相对比较全面了,如果不足可以指出在补充完整. Android-App 常用图标尺寸规范 出自:http://www.cnblogs.com/libertycode/p/5666088.html ...

  7. 平面设计中常用制作尺寸

    平面设计中常用制作尺寸 正度纸张:787×1092mm 开数(正度) 尺寸 单位(mm) 全开 781×1086 2开 530×760 3开 362×781 4开 390×543 6开 362×390 ...

  8. 【无标题】c++ MFC图像处理CImage类常用操作代码

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9598974.html 我看了一下发现关于c++下的CImage图像处理类 的图像处理相关的介绍 ...

  9. 【数据挖掘实验】Clementine概述、记录操作、字段操作与图形的绘制

    一.实验项目名称: Clementine概述.记录操作.字段操作与图形的绘制 二.实验目的与要求: 利用Clementine软件读入不同格式的数据源,并查看数据源内容:数据流的基本操作:记录操作.字段 ...

最新文章

  1. 【Linux】Linux简单操作之vi与vim编辑器
  2. 【Cocos2d-x】开发实战-Cocos中的字符串、标签和中文乱码
  3. Excel如何快速将科学计数法数字变成正常形式
  4. BGP no-advertise
  5. IRP_MJ_CREATE
  6. Linux内核开发工作方向
  7. AI和大数据技术应用实践峰会:再谈数据破圈,智能化指引能否少走弯路?(11-25,北京)...
  8. 自学转行学AI人工智能怎么样?
  9. 【Microstation】第二章:Microstation三维建模基础知识
  10. 怎么把一个RPM包安装到不同的目录?
  11. Eclipse“ctrl+左键”链到实现类
  12. 未找到“SocialiteProviders \ Manager \ ServiceProvider”类
  13. linux下的p2p终结者
  14. 这个俄罗斯大神,又出新作品了!
  15. 网易云计算机系统有限公司,网易云音乐
  16. iOS集成支付宝支付 Alipay
  17. xAxis、yAxis-配置项
  18. 北航计算机学硕和专硕人数,2021考研报考人数公布!今年人数暴增了吗?
  19. 南京师范大学计算机学院师资,南京师范大学计算机与电子信息学院导师教师师资介绍简介-陈燚...
  20. [转]目前游戏行业内部主要几款游戏引擎的技术对比

热门文章

  1. python 用 __all__ 暴露接口
  2. 【NetApp】可以使用查设备备件型号的链接
  3. windows serve 2012部署操作系统之部署(三)
  4. Linux 命令(94)—— env 命令
  5. 30种应该知道的sql调优方法
  6. MySQL MGR 5.7.22 on centos 6.3 单主/多主搭建测试
  7. 开发常见错误之 :Missing artifact com.sun:tools:jar 1.7.0
  8. ajax请求成功后打开新开窗口(window.open())被拦截的解决方法
  9. 分分钟学会系列:mac地址泛洪攻击实验
  10. FPGA相关术语(一)