C++ 派生类的拷贝构造函数

news2024/11/26 0:30:59

当存在类的继承关系时,对于一个类,如果程序员没有编写拷贝构造函数,编译系统会在必要时自动生成一个隐含的拷贝构造函数,这个隐含的拷贝构造函数会自动调用基类的拷贝构造函数,然后对派生类新增的成员对象一一执行拷贝。

如果要为派生类编写拷贝构造函数,一般需要为基类相应的拷贝构造函数传递参数。例如,假设D类是B类的派生类,D类的拷贝构造函数形式如下:

D::D(const Derived &v):B(v){...}

【例】

class B
{
public:
	B(int x = 0):x(x)
	{
		cout << "基类B构造函数" << endl;
	}
	B(B& b)
	{
		cout << "基类B的拷贝构造函数" << endl;
		x = b.x;
	}
	void show1()
	{
		cout <<"x的值为:"<< x << endl;
	}
	int getX()
	{
		return x;
	}
private:
	int x;
};

class D :public B
{
public:
	D(int a, int b, int c, int d):B(a),y(b),z(c),v(d)
	{
		cout << "派生类D的构造函数" << endl;
	}
	D(D& dd) :B(dd)//用派生类的对象dd去初始化基类的引用
	{
		cout << "派生类D的拷贝构造函数" << endl;
		x = dd.x;
		y = dd.y;
		z=  dd.z;
		v = dd.v;
	}
	
	void show2()
	{
		cout << "x的值为:" << getX() << endl;
		cout << "y的值为:" << y << endl;
		cout << "z的值为:" << z << endl;
		cout << "v的值为:" << v << endl;
	}
private:
	int x;
	int y;
	int z;
	int v;
};

int main()
{
	B b(5);
	b.show1();

	D d(1, 2, 3, 4);
	d.show2();

	D dd(d);
	dd.show2();
	return 0;
}

运行结果:
在这里插入图片描述
由于类型兼容规则的作用,可以用派生类的对象去初始化基类的引用,所以上面B类的拷贝构造函数的参数是D类对象的引用dd。

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

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

相关文章

更新镜像配置

安装docker Install Docker Desktop on Linux | Docker Documentation 拉取镜像 sudo docker pull reg.docker.xx-inc.com/xxx/xxxx:20220916 基于镜像运行容器 sudo docker run -it reg.docker.xx-inc.com/xx/xxxx:20230317 /bin/bash 修改配置后ctrlp&#xff0c;再ctrlq…

激光切割机的操作中蛙跳技术是什么意思

其实&#xff0c;蛙跳技术就是指在激光切割机运行的过程中&#xff0c;机器换位置的方式。打个比方&#xff0c;你刚刚在这儿把孔1切好了&#xff0c;接下来就得跑到那儿把孔2切了。 在这个过程中&#xff0c;激光切割机就像是一只青蛙&#xff0c;要从一个位置跳到另一个位置。…

#python# #Matplotlib# 常用可视化图形

工作中&#xff0c;我们经常需要将数据可视化&#xff0c;分享一些Matplotlib图的汇总&#xff0c;在数据分析与可视化中是非常有用。 如下协一些常用图形。 安装相关插件 python3 pip3 install scipy python3 pip3 install pandas python3 pip3 install matplotlib python…

【技巧】如何设置Word文档部分内容“限制编辑”?

我们知道&#xff0c;Word文档可以设置“限制编辑”&#xff0c;也就是保护文档不被随意更改。 那如果只想保护文档中的部分内容&#xff0c;其他内容还是随意编辑更改&#xff0c;是否可以设置部分内容“限制编辑”&#xff1f;答案是可以的&#xff0c;下面小编来举例说明一…

【Tomcat】Tomcat部署及优化

Tomcat 它是一个免费、开源的web应用服务器&#xff1b;基于java代码开发的软件&#xff1b;处理动态请求和基于Java代码的页面开发&#xff1b; 可以在html当中写入Java代码&#xff0c;Tomcat可以解析html页面当中的Java代码&#xff0c;执行动态请求以及动态页面 缺点&#…

静态时序分析与时序约束

一、时序分析的基本概念 1. 时钟 理性的时钟模型是一个占空比为50%且周期固定的方波&#xff1a; 实际电路中输入给FPGA的晶振时钟信号是正弦波&#xff1a; 2. 时钟抖动 Clock Jitter&#xff0c;时钟抖动&#xff0c;相对于理想时钟沿&#xff0c;实际时钟存在不随时钟存在…

生信豆芽菜-火山图绘制使用说明

网站&#xff1a;http://www.sxdyc.com/visualsVolcano 一、火山图简介 火山图是散点图的一种&#xff0c;它将统计测试中的统计显著性量度&#xff08;如p value&#xff09;和变化幅度&#xff08;logFC&#xff09;相结合&#xff0c;能够快速直观地识别那些变化幅度较大且具…

记一次前端直接上传图片到oss报错

前端直接上传图片到阿里云oss,相关过程官网和网上资料已经很详细&#xff0c;不做赘述。 但这个过程比较复杂&#xff0c;前后端对接过程中很容易出现报错&#xff0c;这里遇到了以下报错&#xff0c;不容易排查。 请求显示net::ERR_NAME_NOT_RESOLVED错误&#xff0c;catch输…

『Samba』在Linux中实现高效管理共享文件夹的基本操作与实践

&#x1f4e3;读完这篇文章里你能收获到 Samba 的安装和配置&#xff1a;详细介绍了如何在 Linux 操作系统上安装和配置 Samba 服务器共享文件夹的设置&#xff1a;指导如何选择要共享的文件夹&#xff0c;并为其设置共享名称、路径以及访问权限Samba 用户的创建&#xff1a;提…

一行JS代码导出ant-design中复杂table表格的Excel

使用方式 1、安装依赖 npm install xlsx-js-style2、复制代码文件exportExcel.js至工程 https://github.com/EnthuDai/export-excel-in-one-line 3、在引入excel.js后调用 Excel.export(columns, dataSource, 导出文件名)4、代码demo 5、效果 页面excel 适用范围 对于使…

嵌入式面试笔试刷题(day7)

文章目录 前言一、switch能不能用浮点数二、指针函数和函数指针三、如何防止重复引用头文件四、如何写一个函数可以在main之前执行五、栈和队列区别及应用场景六、linux上查看磁盘内存占用率的命令七、什么是磁盘碎片八、内存泄露是怎么产生的九、发生了coredump怎么解决总结 前…

Nginx复现

docker复现Nginx配置漏洞 2.1CRLF(carriage return/line feed)注入漏洞 这个漏洞产生的原因是请求重定向的错误配置&#xff0c;导致在url中输入回车换行符可以控制http响应头部 比如&#xff1a;location / { return 302 https://$host$uri; } 原本的目的是为了让http的…

【MFC】10.MFC六大机制:RTTI(运行时类型识别),动态创建机制,窗口切分,子类化-笔记

运行时类信息&#xff08;RTTI&#xff09; C: ##是拼接 #是替换成字符串 // RTTI.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> #include <afxwin.h>#ifdef _DEBUG #define new DEBUG_NEW #endifCWinApp th…

MySQL8的下载与安装-MySQL8知识详解

本文的内容是mysql8的下载与安装。主要讲的是两点&#xff1a;从官方网站下载MySQL8安装和从集成环境安装MySQL8。 一、从官方网站下载MySQL8.0安装 MySQL8.0官方下载地址是&#xff1a;&#xff08;见图&#xff09; 官方正式版的最新版本是8.0.34&#xff0c;也推出了创新版…

极致鸿蒙2.0——华为MatePad系列安装AidLux,一个自带vscode的Python编译环境

看着刚刚人入手的华为鸿蒙系统MatePad11平板&#xff0c;是如此的美轮美奂&#xff0c;但是总感觉少了点什么&#xff0c;少了点什么呢&#xff1f;是编程环境&#xff0c;我爱MatePad&#xff0c;也爱编程&#xff0c;那如果可以在MatePad上编程&#xff0c;会发生什么&#x…

链表有无环以及确定入环口详解

142.环形链表 II 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测…

win10强制卸载奇安信天擎

1、win r 打开运行 2、输入msconfig进入系统配置面板 3、点击引导&#xff0c;修改安全引导配置项 4、重启系统&#xff08;桌面会变成纯黑背景&#xff0c;符合预期&#xff0c;莫紧张&#xff09; 5、删除安装的文件夹 若是安装天擎时选择的自定义安装&#xff0c;则配置…

【java】mybatis-plus代码生成

正常的代码生成这里就不介绍了。旨在记录实现如下功能&#xff1a; 分布式微服务环境下&#xff0c;生成的entity、dto、vo、feignClient等等api模块&#xff0c;需要和mapper、service、controller等等分在不同的目录生成。 为什么会出现这个需求&#xff1f; mybatis-plus&am…

一文带你彻底了解java 网络编程的基本概念

一文带你彻底了解java 网络编程的基本概念 主题&#xff1a;探索Java网络编程&#xff1a;构建连接世界的桥梁 作者&#xff1a;Stevedash 发布日期&#xff1a;2023年8月11日 15点18分 &#xff08;PS&#xff1a;这一篇文章作为总章&#xff0c;今天着重讲“Socket套接字编…

小程序如何设置电子票

电子票是一种方便快捷的票务管理方式&#xff0c;可以帮助商家实现电子化的票务管理&#xff0c;提升用户体验。下面介绍&#xff1a;如何在小程序内&#xff0c;设置电子票以及用电子票购买商品。 1. 设置电子票套餐。可以新建一个商品&#xff0c;商品标题写&#xff1a;XX电…