c++取经之路(其五)——类和对象拷贝构造函数

news2024/9/20 12:02:54

概念:拷贝构造函数,只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。

特征:


1. 拷贝构造函数是构造函数的一个重载形式

如:


2. 拷贝构造函数的参数只有一个且必须是类类型对象的引用,使用传值方式编译器直接报错,因为会引发无穷递归调用。

造成原因(自己画的图):


3. 若未显式定义,编译器会生成默认的拷贝构造函数。 默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝。

我们来看这个代码:

class Stack 
{
public:
	Stack(int x=4);
	//Stack(const Stack& st);
	void StackPush(int x);
	~Stack();
private:
	int* _a;
	int _top;
	int _capacity;
};


Stack::Stack(int x)
{
	_a=(int*)malloc(sizeof(int) * x);
	_top = 0;
	_capacity = 4;
}

void Stack::StackPush(int x)
{
	_a[_top++] = x;
}

 Stack::~Stack()
{
	free(_a);
	_a = nullptr;
	_top = 0;
	_capacity = 0;
}


 int main()
 {
	 Stack st1;
	 st1.StackPush(1);
	 Stack st2 = st1;
	 return 0;
 }

如果我们没定义这个函数,编译器自动生成的会完成浅拷贝。

注意:1.他们指针指向的地址都相同,这肯定是不行的,毕竟析构函数会free两次相同的空间。

2.所以我们就需要自己完成一个深拷贝,在这就不去实现了。

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

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

相关文章

springboot+Vue项目部署到云服务器上

一、下载配置ngnix 1.压缩包下载并上传 链接: https://pan.baidu.com/s/1m2LKV8ci4WXkAWdJXIeUFQ 提取码: 0415 2.解压 tar -xzvf 压缩包名 3.编译nginx 在解压好的文件夹下,依次执行: ./configure 来到nginx默认安装路径/usr/local/nginx 依次执行命令 mak…

【企业动态】瑞芯微高级业务总监来访东胜物联,共探新能源汽车市场合作

近日,瑞芯微高级业务总监阙金珍一行来访东胜物联参观交流,并就深化合作进行讨论。 东胜物联与瑞芯微建有长期稳固的合作关系,基于RK3588、RK3399、RK3568等处理器,推出了多款嵌入式核心硬件产品,包括核心板、网关等&a…

一文详解MES、ERP、SCM、WMS、APS、SCADA、PLM、QMS、CRM、EAM及其关系

经常遇到很多系统,比如:MES、ERP、SCM、WMS、APS、SCADA、PLM、QMS、CRM、EAM,这些都是什么系统?有什么功能和作用?它们之间的关系是怎样的? 今天就一文详细分享给大家。 10大系统之间的关系 ERP 和其他…

知名度最高的免费SSL证书

一、选证书类型 根据网站性质与安全需求,选定合适的SSL证书: - 域名验证证书(DV):快速验证域名所有权,适用于个人网站、博客,申请简便。 - 组织验证证书(OV):…

东方博宜 1152. 求n个数的最大值和最小值

东方博宜 1152. 求n个数的最大值和最小值 思路:贼拉简单,就是用排序函数sort()函数,注意点,一个是头文件,一个是for循环里面的起始值 sort(a,an) 从小到大排序,sort(a,an,greater()) 从大到小排序 #incl…

爬虫 | 垃圾处理设施数据的获取与保存

Hi,大家好,我是半亩花海。本项目通过发送网络请求(requests),从指定的 URL 获取垃圾处理设施的相关数据,并将数据保存到 CSV 文件中,以供后续分析和利用。 目录 一、项目结构 二、详细说明 三…

wangzherongyao 2024.04.15

第一局:百里陪那只重置技能CD的辅助,对面有兰陵王,妲己,然后我补位廉颇被自己人和对面一阵嘲讽,真的不想说啥,对面盾山和妲己估计都没明白,我一只就能破他们队伍,所以看到没先出魔抗…

【拦截器Interceptor】springboot拦截器的使用和原理

【拦截器Interceptor】springboot拦截器的使用和原理 【一】拦截器简介(1)简介【2】作用 【二】实现步骤【1】自定义拦截器,实现拦截器接口HandlerInterceptor【2】将拦截器添加到容器当中【3】配置拦截器的拦截规则【4】拦截器的执行顺序 【…

HCIP-Datacom(H12-821)111-120题

111、地址转换技术的优点不包括()? A.地址转换可以使内部网络用户(私有IP地址)方便地访问Internet B.地址转换可以屏蔽内部网络的用户提高内部网络的安全性 C.地址转换可以使内部局城网的许多主机共享一个IP地址上网D.地址转换能够处理IP报头加密的情况 解析:地址转换只处理…

Python远程创建docker容器

1.安装docker yum install dockerdocker -v 2.拉取一个测试镜像,比如tomcat,默认是最新版本的 docker pull tomcat 使用 docker images可以看到该镜像 3.使用Python创建容器 import docker# 连接到远程Docker守护进程 client docker.DockerClient(…

今年消费新潮流:零元购商业模式

今天给大家推荐一种极具创新的电子商务模式:零元购商业模式 这个模式支持消费者以零成本或极低成本购买商品。这种模式主要通过返现、积分、优惠券等方式来减少支付金额,使消费者实现“零成本”购物的目标。 人民网在去年发表了一篇文章。 总结了一下&a…

麒麟服务器操作系统安装HTTP服务

往期好文:麒麟服务器操作系统安装TFTP服务 Hello,大家好啊!今天我们将探讨如何在麒麟服务器操作系统上安装和配置HTTP服务,这是任何网络服务或应用的基础。无论你是想建立一个简单的网站,还是需要一个全功能的Web服务器…

基于微信小程序【原生】+ssm+mysql+jsp消防知识学习平台(含论文)

博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

酸雨降水问题——多元回归分析

目录 题目如下 数据集如下 解题方法 regress 函数 代码实现 得出结果 题目如下 酸雨是降水中各种离子综合作用的结果。实际检测表明:城市降水pH值主要 受酸性离子[SO]、[NO]、[Ca]、[NH]影响。下表列出了我国部分城市降水 中[SO]、[NO]、[Ca⁺]、[NH]的浓度和pH值数据。以…

Linux程序调试优化(1)——内存占用详解及优化思路

文章目录 1.free查看总体的内存占用2./proc/$PID/status 查看某进程状态 linux开发最重要的两个参数,分别是内存以及CPU使用率,若内存出现严重不足,则在需要使用内存时,可能出现申请不到的情况,导致 OOM,L…

如何实现对空调状态监测的监控

随着科技的飞速发展和人们生活水平的持续提高,空调已经成为现代家庭和办公环境中不可或缺的一部分。然而,传统的空调使用方式往往存在能效低下、操作不便等问题。为了解决这些问题,智能空调控制器应运而生,它不仅能实现对空调状态…

Java使用OpenOffice将office文件转换为PDF

Java使用OpenOffice将office文件转换为PDF 1. 先行工作1.1 OpenOffice官网下载1.2 JODConverter官网下载1.3 下载内容 2.介绍3. 安装OpenOffice服务3.1.Windows环境3.2 Linux环境 4. maven依赖5. 转换代码 1. 先行工作 请注意,无论是windows还是liunx环境都需要安装…

zookeeper分布式应用程序协调服务+消息中间件kafka分布式数据处理平台

一、zookeeper基本介绍 1.1 zookeeper的概念 Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。 是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、…

半导体材料(一)

本篇为西安交通大学本科课程《电气材料基础》的笔记。 本篇为这一单元的第一篇笔记,下一篇传送门。 半导体是导电能力介于均属导体和绝缘体之间的固体材料。 半导体基本特征 室温下其电阻数量级约为 1 0 − 6 ∼ 1 0 8 Ω ⋅ m 10^{-6}\sim10^{8}\mathrm{\Omega…

供应IMX415-AAQR-C索尼芯片

长期供应各进口品牌芯片现货: IMX415-AAQR-C IMX492LLJ-C IMX492LQJ-C IMX455ALK-K IMMX455AQK-K IMX461ALR-C IMX461AQR-C IMX661-AAMR-C IMX661-AAQR-C IMX411ALR-C IMX411AQR-C IMX290LQR-C FS32K118LFT0MLHT FS32K146UAT0VLLT FS32K146UAT0VLQT …