weak_ptr概述,weak_ptr常用操作、尺寸
一、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常用操作、尺寸相关推荐
- Spark SQL概述,DataFrames,创建DataFrames的案例,DataFrame常用操作(DSL风格语法),sql风格语法
一. Spark SQL 1. Spark SQL概述 1.1. 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作 ...
- JavaScript之基础-9 JavaScript String(内置对象、String概述、字符串常用操作、模式匹配)...
一.JavaScript 内置对象 内置对象 - 什么是内置对象? 内置对象就是ECMAScript标准中已经定义好的,由浏览器厂商已经实现的标准对象 - 内置对象中封装了专门的数据和操作数据常用的A ...
- CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念)、早期/中期/近期应用领域(偏具体应用)、经典CNN架构(偏具体算法)概述、常用工具/库/框架/产品、环境安装、常用数据集、编程技巧
CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念).早期/中期/近期应用领域(偏具体应用).经典CNN架构(偏具体算法)概述.常用工具/库/框架/产品.环境安装.常用数据集.编程技巧 ...
- ETL流程概述及常用实现方法
ETL是英文Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract).转换(transform).加载(load)至目的端的过程.常见于数据仓库开发中将数 ...
- X86汇编语言从实模式到保护模式11:指令格式及操作尺寸
目录 1. 80286的16位保护模式 1.1 80286寄存器 1.2 80286段描述符 1.3 80286保护模式内存访问 2. 指令操作尺寸 2.1 指令操作尺寸的概念 2.2 16位处理器的 ...
- Android /iPhone/iPad UI之常用图标尺寸规范
整合的相对比较全面了,如果不足可以指出在补充完整. Android-App 常用图标尺寸规范 出自:http://www.cnblogs.com/libertycode/p/5666088.html ...
- 平面设计中常用制作尺寸
平面设计中常用制作尺寸 正度纸张:787×1092mm 开数(正度) 尺寸 单位(mm) 全开 781×1086 2开 530×760 3开 362×781 4开 390×543 6开 362×390 ...
- 【无标题】c++ MFC图像处理CImage类常用操作代码
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9598974.html 我看了一下发现关于c++下的CImage图像处理类 的图像处理相关的介绍 ...
- 【数据挖掘实验】Clementine概述、记录操作、字段操作与图形的绘制
一.实验项目名称: Clementine概述.记录操作.字段操作与图形的绘制 二.实验目的与要求: 利用Clementine软件读入不同格式的数据源,并查看数据源内容:数据流的基本操作:记录操作.字段 ...
最新文章
- 【Linux】Linux简单操作之vi与vim编辑器
- 【Cocos2d-x】开发实战-Cocos中的字符串、标签和中文乱码
- Excel如何快速将科学计数法数字变成正常形式
- BGP no-advertise
- IRP_MJ_CREATE
- Linux内核开发工作方向
- AI和大数据技术应用实践峰会:再谈数据破圈,智能化指引能否少走弯路?(11-25,北京)...
- 自学转行学AI人工智能怎么样?
- 【Microstation】第二章:Microstation三维建模基础知识
- 怎么把一个RPM包安装到不同的目录?
- Eclipse“ctrl+左键”链到实现类
- 未找到“SocialiteProviders \ Manager \ ServiceProvider”类
- linux下的p2p终结者
- 这个俄罗斯大神,又出新作品了!
- 网易云计算机系统有限公司,网易云音乐
- iOS集成支付宝支付 Alipay
- xAxis、yAxis-配置项
- 北航计算机学硕和专硕人数,2021考研报考人数公布!今年人数暴增了吗?
- 南京师范大学计算机学院师资,南京师范大学计算机与电子信息学院导师教师师资介绍简介-陈燚...
- [转]目前游戏行业内部主要几款游戏引擎的技术对比
热门文章
- python 用 __all__ 暴露接口
- 【NetApp】可以使用查设备备件型号的链接
- windows serve 2012部署操作系统之部署(三)
- Linux 命令(94)—— env 命令
- 30种应该知道的sql调优方法
- MySQL MGR 5.7.22 on centos 6.3 单主/多主搭建测试
- 开发常见错误之 :Missing artifact com.sun:tools:jar 1.7.0
- ajax请求成功后打开新开窗口(window.open())被拦截的解决方法
- 分分钟学会系列:mac地址泛洪攻击实验
- FPGA相关术语(一)