C++基础——深拷贝和浅拷贝

C++中类的拷贝有两种:深拷贝,浅拷贝:当出现类的等号赋值时,即会调用拷贝函数

一、概念

浅拷贝:同一类型的对象之间可以赋值,使得两个对象的成员变量的值相同,两个对象仍然是独立的两个对象,这种情况被称为浅拷贝。

深拷贝:当类中有指针,并且此指针有动态分配空间,析构函数做了释放处理,往往需要自定义拷贝构造函数,自行给指针动态分配空间。

1. 在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数——即浅拷贝,它能够完成成员的一一复制。当数据成员中没有指针时,浅拷贝是可行的;

但当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个指针将指向同一个地址,当对象快结束时,会调用两次析构函数,而导致指针悬挂现象,所以,此时,必须采用深拷贝。
2 深拷贝与浅拷贝的区别就在于深拷贝会在堆内存中另外申请空间来储存数据,从而也就解决了指针悬挂的问题。简而言之,
当数据成员中有指针时,必须要用深拷贝

1.深拷贝

2.浅拷贝

二、代码演示

class Person{
public:Person(char* name,int age){pName = (char*)malloc(strlen(name) + 1);strcpy(pName,name);mAge = age;}//增加拷贝构造函数Person(const Person& person){pName = (char*)malloc(strlen(person.pName) + 1);strcpy(pName, person.pName);mAge = person.mAge;}~Person(){if (pName != NULL){free(pName);}}
private:char* pName;int mAge;
};void test(){Person p1("Edward",30);//用对象p1初始化对象p2,调用c++提供的默认拷贝构造函数Person p2 = p1;
}

总结:深拷贝和浅拷贝的区别是在对象状态中包含其它对象的引用的时候,当拷贝一个对象时,如果需要拷贝这个对象引用的对象,则是深拷贝,否则是浅拷贝。

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

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

相关文章

Centos上通过Docker安装单节点ES

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Elasticsearch 是一…

美易官方:美股周一收高,道指连续第四个交易日上涨

收盘之际,美股市场周一的表现可圈可点,各大股指纷纷走高,道指更是连续第四个交易日实现上涨。这一积极态势不仅凸显了投资者对于全球经济的信心,也反映了市场对于未来前景的乐观预期。 道指涨176.59点,涨幅为0.46%&…

Column

目录 1、 Column 1.1、 setCatalogName 1.2、 setDisplaySize 1.3、 setPrecision 1.4、 toString Column

最新贷款市场报价利率(LPR)数据(1991-2024)

数据来源:东方财富网时间跨度:1991-2024年 数据范围:全国范围 数据指标: LPR_1Y利率(%) LPR_5Y利率(%) 中长期贷款利率:5年以上(%) 短期贷款利率:6个月至1年(含)(%) 日期 样例数据: 下载链接: ht…

枚举类型和联合体类型

一、 枚举类型 简单介绍一下 枚举 顾名思义 就是一一例举 像我们生活中的很多东西 比如说一周有多少天 性别有几种 这些都可以用枚举类型来一一列举 1. 枚举类型的定义 我们以性别为例子 这里如果我们开始打印它们的数值的话 我们会发现 typedef enum Sex {MALE,FEMALE…

C语言空结构体所占的内存是多少?

一、问题 标志结构体的关键字是 struct,它将⼀些相关联的数据封装成⼀个整体,⽅便在程序中使⽤。那么,空结构体所占内存是多少呢? 二、解答 1. 知识点介绍 结构体所占的内存⼤⼩是其成员所占内存之和,例如&#xff1…

【Git】 Git分支操作指南

隐形的纪念躲在心里面 也许吧 也许不会再见 阴天或晴天 一天又一年 风它在对我说莫忘这一切 🎵 蔡淳佳《隐形纪念》 Git是一种非常强大的分布式版本控制系统,允许用户在开发过程中创建不同的分支(branch)来分…

【Unity Shader入门精要 第5章】开始 Unity Shader 学习之旅

1. shaderLab语义 在之前的代码中,经常会看到类似POSITION 、SV_POSITION之类的东西,这些都属于shaderLab的语义。简单来讲,这类语义的作用就是用来通知Unity某个变量(或参数、输出)是干什么用的,可以以此…

Docker 的网络实现

简介 标准的 Docker 支持以下 4 类网络模式: 1)host 模式:使用 --nethost 指定 2)container 模式:使用–netcontainer:NAME_or_ID 指定 3)none模式:使用 --netnone 指定 4)bridge 模…

C语言 循环语句 (3) for 循环语句

接下来 我们来看第三个 for语句 基本语句是 for关键字 然后小括号 括号中三个表达式 然后它对表达式2进行判断 如果表达式2条件成立 则走进循环体 执行完循环体 会回来执行表达式3 然后再返回来 继续对表达式2进行判断 如果表达式2 还是成立 这继续循环往复 直到表达式2的条件…

2024年巴黎奥运会网络安全风险评估

研究显示,2024年巴黎奥运会组委会网站的总体网络安全态势基本安全,但也凸显了一些风险,包括开放端口、SSL错误配置、cookie同意违规和域名抢注。 2024年巴黎奥运会备受全球关注,预计将有超过10亿人观看2024年巴黎奥运会&#xff…

公司后缀缩写

Co. Co. 是 company 的缩写,company 本身就是公司(统称)的意思,包括了各种类型公司。 单独使用 Co. 看不出公司具体的类型,经常会跟另一后缀一起使用 Co.,Ltd (意思看后面)。 Ltd. Ltd. 是 L…

uniapp离线在Xcode上打包后提交审核时提示NSUserTrackingUsageDescription的解决方法

uniapp离线在Xcode上打包后提交审核时提示NSUserTrackingUsageDescription的解决方法 问题截图: 亲测有效的方法 方法一: 选择通过uniapp的开发工具Hbuilder来进行在线打包,取消默认勾选的以下选项。 然后进行在线打包就不会存在提交审…

MySQL:多表查询练习

#1.出版社信息 与 图书信息 交叉连接 select * from 出版社信息 cross join 图书信息; #2.从“客户信息”和“订单信息”两张数据表中查询购买了商品的客户信息,要求查询结果显示客户姓名、订单编号、订单状态。 select 客户信息.客户姓名,订单信息.订单编号,订单…

PS路径文字怎么变换的?

如果网友们没有用过钢笔工具,画好后的样子是什么,建议你看看这个方法! 建立的路径之后,在编辑菜单栏里单击。 选择变换路径,可以改变路径文字的方向,点击垂直翻转即可完成方向的改变!

linux进阶篇:Nginx反向代理原理与案例详解

Linux服务搭建篇:Nginx反向代理原理与案例详解 一、什么是正向代理 举个栗子: 我们在校外、公司外,是访问不到学校、公司的内网的,但是我们想要访问内网资源时,会用到VPN。而一般内网会存在一个VPN服务器&#xff0c…

imx6ull开发板设置SD卡启动,SD卡中烧写uboot,kernel,设备树,根文件系统fs

IMX6ULL ARM Linux开发板SD卡启动,SD卡的分区与分区格式化创建_sd制作分区-CSDN博客

n皇后问题

843. n-皇后问题 - AcWing题库 n皇后这道题目, 历来被作为理解深搜\回溯法的样板题, 首先我们可以用中规中矩的深搜来解决这道题: #include<iostream> using namespace std; const int N10; int n; char g[N][N];bool col[N],dg[N],udg[N];bool legal(int u,int i) {ret…

vulhub之jboss(CVE-2017-7504)

JBoss AS 4.x 及之前版本中&#xff0c; JbossMQ 实现过程的 JMS over HTTP Invocation Layer 的 HTTPServerILServlet.java 文件存在反序列化漏洞&#xff0c;远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。 CVE-2017-7504 漏洞与 CVE-2015-7501 的漏洞原理相似&a…

「51媒体」企业单位新闻稿件考核,怎么发布

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 电力税务企事业单位部门等单位提供了新闻稿件&#xff0c;如何在一些重点媒体进行宣发呢&#xff1a; 精准锁定发布媒体 了解考核要求&#xff1a;仔细阅读宣传任务名单&#xff0c;了解…