【C++ 内存管理】深拷贝和浅拷贝你了解吗?

文章目录

      • 1.深拷贝
      • 2.浅拷贝
      • 3.深拷贝和浅拷贝

1.深拷贝

🍎 深拷⻉: 是对对象的完全独⽴复制,包括对象内部动态分配的资源。在深拷⻉中,不仅复制对象的值,还会复制对象所指向的堆上的数据

特点:
🐧① 复制对象及其所有成员变量的值。

🐧②动态分配的资源也会被复制,新对象拥有⾃⼰的⼀份资源副本。



  • 深拷贝通常涉及到⼿动分配内存,并在拷⻉构造函数或赋值操作符中进⾏资源的复制。
class DeepCopyExample {
public:int *data;DeepCopyExample(const DeepCopyExample &other) {// ⼿动分配内存并复制数据data = new int(*(other.data));}~DeepCopyExample() {// 释放动态分配的资源delete data;}DeepCopyExample& operator=(const DeepCopyExample &other) {// 复制数据if (this != &other) {delete data;data = new int(*(other.data));}return *this;}
};


2.浅拷贝

🍎 浅拷⻉: 浅拷⻉仅复制对象的值,⽽不涉及对象内部动态分配的资源。在浅拷⻉中,新对象和原对象共享相同的资源,⽽不是复制⼀份新的资源。

特点:
🐧① 复制对象及其所有成员变量的值。

🐧②对象内部动态分配的资源不会被复制,新对象和原对象共享同⼀份资源。



  • 浅拷⻉通常使⽤默认的拷⻉构造函数和赋值操作符,因为它们会逐成员地复制原对象的值。
class ShallowCopyExample {
public:int *data;// 使⽤默认拷⻉构造函数和赋值操作符
};

3.深拷贝和浅拷贝

在这里插入图片描述

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

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

相关文章

1.理解机器学习

本文参考于:https://hands1ml.apachecn.org/1/ 大多数人听到“机器学习”,往往会在脑海中勾勒出一个机器人:一个可靠的管家,或是一个可怕的终结者,这取决于你问的是谁。但是机器学习并不是未来的幻想,它已经…

【吃透Java手写】3-SpringBoot-简易版-源码解析

【吃透Java手写】SpringBoot-简易版-源码解析 1 SpringbootDemo2 准备工作2.1 Springboot-my2.1.1 依赖2.1.2 SpringBootApplication2.1.3 SJBSpringApplication2.1.3.1 run方法 2.2 Springboot-user2.2.1 依赖2.2.2 UserController2.2.3 UserApplication 2.3 分析run方法的逻辑…

第二章 checkpoint机制 - 介绍

Checkpoint介绍 1、介绍 PostgreSQL基于DRAMHDD/SSD两层存储架构,所有读写都在DRAM中进行。由于数据写大部分都是随机的,为提高数据库性能,通过写前日志WAL将所有修改都记录到日志中,事务提交时,将日志持久化到磁盘即…

Java入门基础学习笔记12——变量详解

变量详解: 变量里的数据在计算机中的存储原理。 二进制: 只有0和1, 按照逢2进1的方式表示数据。 十进制转二进制的算法: 除二取余法。 6是110 13是1101 计算机中表示数据的最小单元:一个字节(byte&…

通俗的理解网关的概念的用途(一)

网关这个概念最早使用于网络,但在当今的智能设备/产品界中,硬生生的被产品人也搞出来一个“网关”的概念,这让早期的咱们这些只知道网络中的网关的人,听得稀里糊涂的。比如智能门锁、安防摄像头等,在产品的使用和介绍中…

java JMH 学习

JMH 是什么? JMH(Java Microbenchmark Harness)是一款专用于代码微基准测试的工具集,其主要聚焦于方法层面的基准测试,精度可达纳秒级别。此工具由 Oracle 内部负责实现 JIT 的杰出人士编写,他们对 JIT 及…

服务号转订阅号的操作步骤(吐血整理)

服务号和订阅号有什么区别?服务号转为订阅号有哪些作用?我们知道,公众号分为服务号和订阅号两种,服务号只能企业才可以申请,订阅号是企业和个人都可以申请。其中最大的区别是服务号一个月只能发送4次群发,但…

shopro商城 源码搭建/部署/上线/运营/售后/更新

基于Fastadmin和Uniapp进行开发的多平台(微信公众号、微信小程序、H5网页、Android-App、IOS-App)购物商城,拥有强大的店铺装修、自定义模板、路由同步、多端支付(微信,支付宝)、多规格商品、运费模板、多地…

我在洛杉矶采访到了亚马逊云全球首席信息官CISO(L11)!

在本次洛杉矶举办的亚马逊云Re:Inforce全球安全大会中,小李哥作为亚马逊大中华区开发者社区和自媒体代表,跟着亚马逊云安全产品团队采访了亚马逊云首席信息安全官(CISO)CJ Moses、亚马逊副总裁Eric Brandwine和亚马逊云首席高级安全工程师Becky Weiss。 …

【学习AI-相关路程-工具使用-自我学习-Ubuntucudavisco-开发工具尝试-基础样例 (2)】

【学习AI-相关路程-工具使用-自我学习-cuda&visco-开发工具尝试-基础样例 (2)】 1、前言2、环境说明3、总结说明4、工具安装0、验证cuda1、软件下载2、插件安装 5、软件设置与编程练习1、创建目录2、编译软件进入目录&创建两个文件3、编写配置文…

可微分矢量图形光栅化用于编辑和学习

图1. 我们引入了一种通过反向传播将光栅和矢量域联系起来的矢量图形可微分光栅化器。可微分光栅化实现了许多新颖的矢量图形应用。(a)在几何约束下,通过局部优化图像空间度量(如不透明度)来实现交互式编辑。&#xff0…

如何使用vue脚手架创建项目

前言 使用vue搭建项目的时候,我们可以通过对应的cmd命令去打开脚手架,然后自己配置对应的功能插件 说明: 要使用Vue脚手架创建项目,你需要先确保你已经安装了Node.js和npm(Node.js的包管理器)。然后&#…

uniapp 版本检查更新

总体来说uniapp的跨平台还是很不错的,虽然里面各种坑要去踩,但是踩坑也是开发人员的必修课和成长路。 这不,今天就来研究了一下版本检查更新就踩到坑了。。。先来看看检查更新及下载、安装的实现。 先来看看页面: 从左到右依次为…

CSRF、XSS攻防原理及解决方案

一、CSRF CSRF 全称叫做,跨站请求伪造(Cross—Site Request Forgery),顾名思义,攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作&…

bbr 是真不行

bbr 作为 mimd 实例如何收敛到公平请看 瓶颈带宽的公平收敛,但这只是公平收敛,并不是 buffer 收敛。 上午跟朋友讨论了一个有趣的问题,感觉有必要揭露一下 bbr 的 buffer 不收敛。若不是有 probertt,多流共享瓶颈链路场景下&…

TC377TX 超声波雷达数据更新缓慢问题排查

1、问题表象 通过标定数据查看超声波雷达实时的距离大小,发现距离并没有实时更新,而是在实际值与默认值之间跳变,更新十分缓慢。   泊车功能必须依赖超声波雷达测距来实现,当雷达数据更新缓慢时,会导致泊车失败。 2、超声波雷达测距实现原理 MCU给超声波雷达发送一个40…

【SpringBoot整合系列】SpringBoot整合RabbitMQ-消息可靠性

目录 确保消息的可靠性RabbitMQ 消息发送可靠性分析解决方案开启事务机制发送方确认机制单条消息处理消息批量处理 失败重试自带重试机制业务重试 RabbitMQ 消息消费可靠性如何保证消息在队列RabbitMQ 的消息消费,整体上来说有两种不同的思路:确保消费成…

Python专题:十、字典(1)

数据类型:字典,是一个集合性质的数据类型 字典的初始化 字典{关键字:数值} 新增元素 修改元素 字典元素访问 字典[关键字} in 操作符 字典关键字检测 字典元素遍历 ①遍历关键字

ESP32引脚入门指南(六):从理论到实践(UART)

ESP32开发板具有UART0、UART1和UART2三个UART接口,支持异步通信(RS232和RS485)和IrDA速率高达5mbps。这些接口提供了丰富的串行通信选项,允许与各种设备进行全双工通信。 UART接口概述与引脚配置 UART 是一种全双工通信协议,允许数据同时在…

JAVA获取application.yml配置文件的属性值

application.yml配置参数 方式一:使用Value方式(常用) 语法 Value("${配置文件中的key:默认值}") Value("${配置文件中的key}")方法1:使用的类文件中定义变量,直接使用变量 import org.springframework.beans.factory.an…