C++中的深拷贝和浅拷贝介绍

news2024/11/24 9:10:34

对于基本类型的数据以及简单的对象,它们之间的拷贝非常简单,就是按位复制内存。例如:

    class Base{
    public:
        Base(): m_a(0), m_b(0){ }
        Base(int a, int b): m_a(a), m_b(b){ }
    private:
        int m_a;
        int m_b;
    };
    int main(){
        int a = 10;
        int b = a;  //拷贝
        Base obj1(10, 20);
        Base obj2 = obj1;  //拷贝
        return 0;
    }

b 和 obj2 都是以拷贝的方式初始化的,具体来说,就是将 a 和 obj1 所在内存中的数据按照二进制位(Bit)复制到 b 和 obj2 所在的内存,这种默认的拷贝行为就是浅拷贝,这和调用 memcpy() 函数的效果非常类似。

对于简单的类,默认的拷贝构造函数一般就够用了,我们也没有必要再显式地定义一个功能类似的拷贝构造函数。但是当类持有其它资源时,例如动

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

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

相关文章

项目管理软件在项目中的这些作用,你知道吗?

现在项目管理软件成为各类企业必不可少的工具,给项目提供全面的视图、促进团队协作、实时跟踪和监控、优化资源利用、改善决策制定等优势。 它们可以帮助团队成员更好地组织和协作,是实现项目目标的必备工具。通过合理利用项目管理软件的功能和特点&…

87 # express 应用和创建应用的分离

创建应用的过程和应用本身要进行分离。路由和创建应用的过程也做一个分离。 下面实现创建应用的过程和应用本身要进行分离: express.js const Application require("./application");function createApplication() {// 通过类来实现分离操作return ne…

一篇文章告诉您立仪3D线激光位移传感器

激光位移传感器是利用激光技术进行测量的传感器。它由激光器、激光检测器和测量电路组成。激光传感器是新型测量仪表。能够精确非接触测量被测物体的位置、位移等变化。 可以测量位移、厚度、振动、距离、直径等精密的几何测量。激光有直线度好的优良特性,同样激光…

【MATLAB第75期】#源码分享 | 基于MATLAB的不规则数据插值实现时间序列数据扩充

【MATLAB第75期】#源码分享 | 基于MATLAB的不规则数据插值实现时间序列数据扩充 如时间数据以单位1为间隔排序, 可插间隔为0.5的数据 。 一、实现效果 1.规则间隔数据 2.非规则间隔数据 二、主程序代码 1.插值测试效果 %% 清空环境变量 warning off …

【送书活动1】强势挑战Java,Kotlin杀回TIOBE榜单Top 20!

⭐简单说两句⭐ 作者:后端小知识 CSDN个人主页:后端小知识 🔎GZH:后端小知识 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 强势挑战Java,Kotlin杀回TIOBE榜单Top 20! …

python绘制钻头外径磨损图

import matplotlib.pyplot as plt import numpy as np srcpathrC:\Users\user\Documents\F1-21\data0.125-1.8.txtdef openreadtxt(file_name):data []with open(file_name, r) as file:file_data file.readlines() # 读取所有行for row in file_data:tmp_list row.split()…

跨境支付融合解析:有效解决跨境电商系统开发的支付问题

作为跨境电商系统开发的专家,我们深知支付问题对整个系统的重要性。在不同国家、不同支付体系的交叉领域里,跨境支付融合是一个引人注目的话题。本文将深入探讨跨境支付融合的必要性,分析其优势,并提供一系列解决方案,…

vue-element-admin项目部署 nginx动态代理 含Docker部署、 Jenkins构建

介绍三种方式: 1.直接部署到nginx中 2.用nginx docker镜像部署 3.使用Jenkins构建 1.直接用nginx部署 vue-element-admin项目下有两个.env文件,.env.production是生产环境的,.env.developpment是开发环境的 vue-element-admin默认用的是mock数…

ChatGPT竞争对手Writer,获得1亿美元融资;面向不同任务微调Llama-2经验总结

🦉 AI新闻 🚀 ChatGPT竞争对手Writer,获得1亿美元融资 摘要:美国生成式AI平台Writer宣布获得1亿美元的B轮融资。Writer提供类似于ChatGPT的功能,主要聚焦在企业领域,提供文本生成、总结摘要、文本纠错等服…

注解实现接口幂等性

一、什么是幂等性? 简单来说,就是对一个接口执行重复的多次请求,与一次请求所产生的结果是相同的,听起来非常容易理解,但要真正的在系统中要始终保持这个目标,是需要很严谨的设计的,在实际的生…

C++ 异常处理学习笔记

一、使用情况 1、数组越界:包括数组索引小于0,或者大于数组长度 2、空指针 可以抛出(throw)各种类型的异常,catch的地方接收就可以

电子产品的老化测试有哪些类型?

一、什么是老化测试?老化测试时,专用老化电路板上的元件将承受等于或高于其额定工作条件的压力,以消除任何在额定寿命之前过早失效的元件。这些测试条件包括温度、电压/电流、工作频率或指定为上限的任何其他测试条件。这些类型的压力测试有时…

java -jar后出现中文乱码

吹牛撒谎是道义上的灭亡,它势必引向政治上的灭亡。列宁 黑窗口执行一个jar包,发现程序运行后打印的日志全部出现中文乱码的情况,现记录一下解决的办法。 网上说dos窗口出现中文乱码有两种情况,一是运行jar包后程序输出的日志出现乱码&#x…

节省十倍代码,精益 Web 开发:Nue JS 的极简之道 | 开源日报 No.34

lodash/lodash Stars: 57.3k License: NOASSERTION lodash 是一个以 UMD 模块形式导出的 Lodash 库。 简化 JavaScript 编程,提供了一系列处理数组、数字、对象和字符串等操作的方法。模块化设计,方便迭代数组、对象和字符串;操作和测试值…

MPLS VPN跨域B

拓扑设计 拓扑介绍 如图,上海分公司与山东分公司之间为保证业务可以互通,需要使用MPLS VPN技术进行连接。且为了使设备减轻压力,只有拓扑中两边的设备需要建立VRF实例,其余设备不可以建立实例。因为网络需要经过联通与移动两个AS域…

2023最新最热五款CRM系统推荐,一文让你明白CRM系统是什么?

本文将为大家讲解:1、CRM是什么;2、CRM系统应该如何玩转?3、CRM实施要注意哪些问题?4、如何选择优质的CRM管理系统?5、2023最新最热五款CRM系统推荐。 一、 CRM是什么 CRM代表客户关系管理(Customer Rela…

sentry安装self-hosted版,前端监控平台

一、下载self-hosted-23.7.2.tar.gz 二、解压 三、cd self-hosted-23.7.2然后执行./install.sh 四、查找python whereis python修改yum配置文件:vim /usr/bin/yum五、修改RUN apt-get update && apt-get install -y --no-install-recommends cron &…

[论文阅读]A ConvNet for the 2020s

摘要 视觉识别的咆哮的20年代开始于ViTs的引入,它很快取代了卷积神经网络,成为最先进的图像分类模型。另一方面,一个原始的ViT在用于一般的比如目标识别和语义分割的计算机视觉任务的时候面临困难。层次Transformer(例如,Swin-Tr…

Vc - Qt - “扩张“的窗口

该示例演示了一个"扩张的窗口"&#xff0c;主窗口的布局为水平布局&#xff0c;内置两个子窗口&#xff0c;采用定时器设置左边窗口的宽度&#xff0c;达到控制"扩张"的目的。 #include <QApplication> #include <QWidget> #include <QHBox…

iTunes无法连接iPhone?五大绝佳方法!

使用苹果手机的用户应该都知道iTunes软件。这是一款多媒体管理中心&#xff0c;用来管理音乐、视频、广播以及备份等数据&#xff0c;能够帮助用户更好地使用苹果手机。 但是有些小伙伴表示很苦恼&#xff1a;“按照软件提示连接电脑后根本没反应&#xff0c;iTunes无法识别手…