C++|44.智能指针

news2024/11/18 0:32:31

文章目录

  • 智能指针
    • unique_ptr
      • 特点一——无法进行复制
    • shared_ptr
      • 特点一——可复制
      • 特点二——计数器(用于确定删除的时机)
  • 其他

智能指针

在这里插入图片描述
通常的指针是需要特殊地去申请对应的空间,并在不使用的时候还需要人工去销毁。
而智能指针相对普通的指针将申请和销毁封装到整个指针内部,于是就不用特地去人为的申请和销毁。

unique_ptr

特点一——无法进行复制

在这里插入图片描述
原因可以通过查看智能指针的源码得到。
在这里插入图片描述
由上图观察得到,智能指针的源码删除了智能的构造函数和赋值运算(的重载),所以没办法对智能指针进行复制。
这样做也是为了避免错误。当智能指针离开作用域后,将自行进行销毁,如果说智能指针真能复制的话,那么全部复制了的智能指针也会销毁,但已经销毁了,就没有必要再有销毁这个功能了。

shared_ptr

特点一——可复制

在这里插入图片描述
使用shared_ptr的话,是可以将其进行复制的。
这点是不同于unique_ptr的。

特点二——计数器(用于确定删除的时机)

每一个shared_ptr都会指向同一个事物,从而会绑定上一个计数器。
当增添一个shared_ptr/引用,计数器就会加一。
而删除一个shared_ptr/引用,计数器就会减一。
特别的,当计数器减为0时,整个事物才会进行删除。

其他

智能指针并不是能去代替全部的new()delete()
它只是说如果当前场景是懒得去人工删/不需要人工删的情况,可以考虑使用智能指针。
并且优先使用unique_ptr,因为其占用的内存小。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1378901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024 1.6~1.12 周报

一、上周工作 论文研读 二、本周计划 思考毕业论文要用到的方法或者思想,多查多看积累可取之处。学习ppt和上周组会内容、卷积神经网络。 三、完成情况 1. 数据训练的方式 1.1 迁移学习 迁移学习是一种机器学习方法,把任务 A 训练出的模型作为初始模…

Java8常用新特性

目录 简介 1.默认方法 2..Lambda表达式 3.Stream API 4.方法引用 5.Optional类 简介 Java 8是Java编程语言的一个重要版本,引入了许多令人兴奋和强大的新特性。这些特性使得Java程序更加现代化、灵活和高效。让我们一起来探索一些Java 8的常用新特性吧&#…

css3基础语法与盒模型

css3基础语法与盒模型 前言CSS3基础入门css3的书写位置内嵌式外链式导入式(工作中几乎不用)行内式 css3基本语法css3选择器标签选择器id选择器class类名原子类复合选择器伪类元素关系选择器序号选择器属性选择器css3新增伪类![在这里插入图片描述](https…

【Java SE语法篇】6.数组

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 文章目录 1.数组的基本概念1.1 为什么使用数组?1.…

如何一键添加引号和英文逗号,然后可以放入SQL中使用 → WHERE USER_NAME IN (‘张三‘,‘李四‘,‘王五‘)

如何一键添加引号和英文逗号,然后可以放入SQL中使用 → WHERE USER_NAME IN(张三,李四,王五) 一、背景二、解决方法三、一键添加引号和英文逗号的教程 一、背景 在日常开发中,当处理VARCHAR或VARCHAR2类型的字段时,很…

【Linux实用篇】Linux常用命令(1)

目录 1.1 Linux命令初体验 1.1.1 常用命令演示 1.1.2 Linux命令使用技巧 1.1.3 Linux命令格式 1.2 文件目录操作命令 1.2.1 ls 1.2.2 cd 1.2.3 cat 1.2.4 more 1.2.5 tail 1.2.6 mkdir 1.2.7 rmdir 1.2.8 rm 1.1 Linux命令初体验 1.1.1 常用命令演示 在这一部分中…

关于鸿蒙的ArkUI的自我理解

先不说好不好上手 一些软件必要的基础概念了解 ①瓦片地图 --无或未找到 ②视频播放功能 --未找到能播放直播流(找到个 ohos/ijkplayer不知如何) ③支付功能 微信无 支付宝的是java代码写得,AskUI中如何调用 ④推送 --自己应该有吧 ⑤长…

influxdb: 元数据操作

一、写语法 https://docs.influxdata.com/influxdb/v1.7/write_protocols/line_protocol_tutorial/ 二、字段类型 https://docs.influxdata.com/influxdb/v1.7/write_protocols/line_protocol_reference/ 获取库下的表列表 SHOW MEASUREMENTS [ON <database_name>]…

MySQL的Windows系统安装

一、MySQL的Windows系统安装 1、下载MySQL安装包 打开如下链接地址&#xff0c;下载安装包 2、安装并配置 双击下载好的安装包进行安装&#xff0c;出现如下界面&#xff1a; 选择【 Full 】选项&#xff0c;然后单击【 Next 】按钮。 出现如下界面&#xff0c;单击【 Execute…

HCIA的交换机(单臂路由)

实现单臂路由的IP自动分配 实验素材&#xff1a; 实现思路&#xff1a; 交换机&#xff1a;创建VLAN10&#xff0c;VLAN20&#xff0c;将0/0/1&#xff0c;2划入相应VLAN&#xff0c;接口使用access模式&#xff0c; 要实现两个交换机之间的通信&#xff0c;须在0/0/3口使用t…

HTML 链接 图片引入

文章目录 链接图片引入 链接 准备工作 新建一个名为link.html和suc.html suc.html <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>显示结果</title></head><body>注册成功...&l…

springboot+ipage分页频繁请求会报错 自动添加多一个limit

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near LIMIT 500 at line 3 这个原因是因为springboot配置mysql的连接池太…

2024阿里云服务器ECS介绍_全方位解析_CPU性能详解

阿里云服务器ECS英文全程Elastic Compute Service&#xff0c;云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;阿里云提供多种云服务器ECS实例规格&#xff0c;如经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等&#xff0c;阿里云百科aliyunbai…

HTTP 常见协议:选择正确的协议,提升用户体验(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

「Qt Widget中文示例指南」如何实现一个日历?(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 本文中的CalendarWi…

UG装配-多运动组合动画与自动创建装配路径

当圆盘在装配过程中既有旋转运动&#xff0c;又有直线运动的时候&#xff0c;我们需要用到序列中的抽取路径 抽取路径命令在如下位置&#xff0c;需要注意的是&#xff0c;使用抽取路径前&#xff0c;如果有其他零件与所取对象配合&#xff0c;需要先物体脱离或使用拆卸对其脱离…

什么情况下考虑同时接入SD-WAN与MPLS

在企业网络架构中&#xff0c;SD-WAN和MPLS&#xff08;多协议标签交换&#xff09;都是常见的网络连接解决方案。而有时候&#xff0c;企业可能面临一种情况&#xff0c;即需要同时接入SD-WAN和MPLS。本文将探讨在什么情况下考虑同时使用这两种网络连接方式&#xff0c;并分析…

NAND新一代接口Separate Command Address (SCA) 简介

通过NAND Flash总线传输的信号分为三种类型&#xff1a;命令&#xff08;Commands&#xff09;、地址&#xff08;Addresses&#xff09;和数据&#xff08;Data&#xff09;。这些信号利用DQ[7:0]时间分时复用技术&#xff0c;在不同的时间段分别进行传输。其中&#xff0c;数…

监督学习 - 逻辑回归(Logistic Regression)

什么是机器学习 逻辑回归&#xff08;Logistic Regression&#xff09;虽然名字中包含"回归"一词&#xff0c;但实际上是一种用于解决分类问题的统计学习方法&#xff0c;而不是回归问题。它是一种线性模型&#xff0c;常用于二分类问题&#xff0c;也可以扩展到多分…

亚马逊云科技 WAF 部署小指南(五):在客户端集成 Amazon WAF SDK 抵御 DDoS 攻击...

方案介绍 在 WAF 部署小指南&#xff08;一&#xff09;中&#xff0c;我们了解了 Amazon WAF 的原理&#xff0c;并通过创建 WEB ACL 和托管规则防护常见的攻击。也了解了通过创建自定义规则在 HTTP 请求到达应用之前判断是阻断还是允许该请求。在 Amazon WAF 自定义规则中&am…