C++继承与派生——(4)派生类的构造函数

 

归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝
缺乏明确的目标,一生将庸庸碌碌!

一起加油!

       定义好派生类后,通常需要用派生类定义对象,在定义对象时,系统会自动调用构造函数进行初始化。由于派生类不能继承基类的构造函数,必须定义自己的构造函数,并且派生类拥有基类所有的数据成员,因此,派生类的构造函数除了需要对自己的数据成员进行初始化外,还必须调用基类的构造函数初始化基类的数据成员,这种调用过程是编译系统自动完成的。若基类构造函数需要一些形参,派生类构造函数必须要传相应的参数给基类构造函数,否则编译会出现错误。

        派生类构造函数的一般格式如下:

<派生类名>(<总参数表>) :<基类名> (<参数表 1>),<对象成员名>(<参数表 2>)

{
<派生类数据成员的初始化>

}

        与一般构造函数基本原则相同: 派生类的构造函数与类名相同,无任何返回值:派生类构造函数的总参数表中不仅包括用来对派生类新成员初始化的参数,还包括基类初始化所需要的参数如果派生类中有子对象,还应包括子对象初始化的参数。在参数表之后,需要列出基类名、传给基类构造函数的参数、对象成员名,以及用来对对象成员进行初始化的参数,各项目之间用逗号隔开。

例:派生类构造函数示例。

#include<iostream>
#include<string>
using namespace std;
class Person{
	private:
		string name;
		int age;
		char sex;
	public:
		Person(string pName,int pAge,char pSex){
			name=pName;
			age=pAge;
			sex=pSex;
		}
		string getName(){
			return name;
		}
		int getAge(){
			return age;
		}
		char getSex(){
			return sex;
		}
		void print();
}; 

void Person::print(){
	cout<<"姓名:"<<name<<endl;
	cout<<"年龄:"<<age<<endl;
	cout<<"性别:"<<sex<<endl;
}

class Student:public Person{
	private:
		int ID;
		double score;
	public:
		Student(string pName,int pAge,char pSex,int pID,double pScore):	Person(pName,pAge,pSex){
			ID=pID;
			score=pScore;
		}
		int getID(){
			return ID;
		}
		double getScore(){
			return score;
		}
		void print(); 
};

void Student::print(){
	Person::print();
	cout<<"学号:"<<ID<<endl;
	cout<<"分数:"<<score<<endl; 
}

int main(){
	Student s("李华",18,'F',20230011,95);
	s.print();
	return 0;
}

         以上就是我对C++继承与派生——(4)派生类的构造函数的理解,希望本篇文章对你有所帮助,也希望可以支持支持博主,后续博主也会定期更新学习记录,记录学习过程中的点点滴滴。如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对C++继承与派生的理解,请持续关注我哦!!! 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

克魔助手工具下载、注册和登录指南

下载安装克魔助手 摘要 本文介绍了如何下载安装克魔助手工具&#xff0c;以及注册和登录流程。通过简单的步骤&#xff0c;用户可以轻松获取并使用该工具&#xff0c;为后续的手机应用管理操作做好准备。 引言 克魔助手是一款免费的手机管理工具&#xff0c;通过该工具用户…

一款能封堵牙本质小管的牙膏,帮你告别牙齿敏感

冬天来临&#xff0c;牙齿敏感成为了很多人的困扰。吃冷饮、涮火锅都让人倍感不适&#xff0c;这时候一款有效的牙膏就显得格外重要。最近我发现了一款非常不错的清九野小红盾牙膏&#xff0c;它能够有效缓解牙齿敏感问题。 造成“敏感牙”的原因有很多&#xff0c;但根本原因还…

async和await的使用

async和await是promise的一种语法糖,也就是更简单易懂的写法。 在很多项目中,你会经常看到async和await的配合使用,看到原始的promise写法反而不多,就是因为async-await这种写法是用同步的语法去实现异步的逻辑。 基础使用 原生promise写法 let value nulllet proFn new P…

list集合

List集合 List集合的概述 有序集合&#xff08;也称之为序列&#xff09;&#xff0c;用户可以精确的控制列表中的每个元素的插入位置。用户可以通过整数索引访问元素&#xff0c;并搜索列表中的元素 与 Set 集合不同&#xff0c;列表通常允许重复的元素 List 集合的特点 有…

【大数据存储与处理】开卷考试总复习笔记

文章目录 实验部分一、 HBase 的基本操作1. HBase Shell入门2. HBase创建数据库表3. HBase数据操作4. HBase删除数据库表5. HBase Python基本编程 before二、 HBase 过滤器操作1.创建表和插入数据2.行键过滤器3.列族与列过滤器4.值过滤器5.其他过滤器6.python hbase 过滤器编程…

7、自建代码管理平台:GitLab/Gitea

GitLab/Gitea 一、GitLab1、 GitLab简介2、 GitLab安装 二、Gitea1、Gitea安装2、Gitea创建仓库3、Gitea注册服务 一、GitLab 1、 GitLab简介 GitLab是由GitLabInc.开发&#xff0c;使用MIT许可证的基于网络的Git仓库管理工具&#xff0c;且具有wiki和issue跟踪功能。使用Git…

CTFshow-pwn入门-栈溢出pwn41-pwn42

pwn41 我们首先将pwn文件下载下来&#xff0c;拖入到虚拟机查看一下文件的保护信息。 chmod x pwn checksec pwn该文件只开启了栈不可执行&#xff0c;并且文件是32位的。 我们把文件托到ida32中查看一下反编译代码。 int __cdecl main(int argc, const char **argv, const c…

MySQL数据库:复合查询

目录 一. 多表查询 二. 子查询 2.1 单行子查询 2.2 多行子查询 2.3 多列子查询 2.4 在from语句中使用子查询 三. 合并查询 3.1 union 3.2 union all 四. 总结 前置说明&#xff1a;本文主要oracle 9i的经典雇员信息测试表为例&#xff0c;进行示例演示。 该表有三个…

git远程操作,推送【push】,拉取【pull】,忽略特殊文件,配置别名,标签管理

文章目录 前言&#xff1a;新建远程仓库克隆推送【push】拉取【pull】 配置git忽略特殊文件给命令配置别名 标签管理理解标签创建标签操作标签 前言&#xff1a; 大家如果没有看过前几章git的基础操作的话&#xff0c;推荐先看一下&#xff0c;看完再来看这个远程操作&#xf…

ARM12.26

整理三个按键中断代码 key_it.h #ifndef __KEY_IT_H__ #define __KEY_IT_H__ #include"stm32mp1xx_gpio.h" #include"stm32mp1xx_gic.h" #include"stm32mp1xx_exti.h" #include"stm32mp1xx_rcc.h" #include"led.h" void k…

ARCGIS PRO SDK 要素空间关系

一、要素与要素查询&#xff0c;返回的是bool值 1、 Touches 判断几何要素是否接触 Touches 如果 geometry1 与 geometry2 接触&#xff0c;则返回 true&#xff0c;否则 false。 touches GeometryEngine.Instance.Touches(Geometry1, Geometry2) 2、…

ROS 传感器 激光雷达

激光雷达&#xff0c;全称Light Detection And Ranging&#xff0c;主要用于利用激光来检测物体以及测量与物体之间的距离&#xff0c;是一种重要的传感器技术&#xff0c;这种技术被广泛应用于自动驾驶、无人船、无人机等领域&#xff0c;用于避障和环境探测。 在ROS环境中&a…

什么是阿里云负载均衡SLB?

目录 硬件或软件负载均衡的区别是什么&#xff1f; 什么是阿里云负载均衡SLB&#xff1f; 阿里云传统型负载均衡CLB 硬件或软件负载均衡的区别是什么&#xff1f; 通过专用硬件实现负载均衡&#xff0c;那么整体成本会较高&#xff0c;而且设备容易出现单点故障&#xff0c;…

简析SoBit 跨链桥图文教程

从BTC网络到Solana网络桥接BRC20 1.打开SoBit平台&#xff1a;在您的网络浏览器中启动SoBit Bridge应用程序。 2.连接您的钱包&#xff1a; 选择SoBit界面右上角的比特币网络来连接您的数字钱包。 3.选择源链、目标链和您想桥接的代币&#xff1a; 从下拉菜单中选择’BTC’作为…

弱电工程计算机网络系统基础知识

我们周围无时无刻不存在一张网&#xff0c;如电话网、电报网、电视网、计算机网络等&#xff1b;即使我们身体内部也存在许许多多的网络系统&#xff0c;如神经系统、消化系统等。最为典型的代表即计算机网络&#xff0c;它是计算机技术与通信技术两个领域的结合。 计算机网络的…

【PTA】L1-016 验证身份(C++)

题目链接 &#xff1a; 题目要求&#xff1a; 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c;5&#xff0…

axios进行图片上传组件封装

文章目录 前言图片上传接口&#xff08;axios通信)图片上传使用upload上传头像效果展示总结 前言 node项目使用 axios 库进行简单文件上传的模块封装。 图片上传接口&#xff08;axios通信) 新建upload.js文件&#xff0c;定义一个函数&#xff0c;该函数接受一个上传路径和一…

.Net7.0 或更高版本 System.Drawing.Common 上传图片跨平台方案

项目升级.Net7.0以后&#xff0c;System.Drawing.Common开关已经被删除&#xff0c;且System.Drawing.Common仅在 Windows 上支持 &#xff0c;于是想办法将原来上传图片验证文件名和获取图片扩展名方法替换一下&#xff0c;便开始搜索相关解决方案。 .Net6.0文档&#xff1a;…

【vue滚动条插件vuescroll】【vue自定义滚动条】

文章目录 前言一、使用步骤1.下载2.引入库三、在组件中如何使用&#xff1f;四、跳转到顶部的方法scrollTo() 五、效果总结 前言 由于浏览器自带的滚动条比较不符合设计图&#xff0c;所以在大部分项目中&#xff0c;我们都会自定义滚动条的样式&#xff0c;来还原设计图&…

Hive实战:词频统计

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据文件1、在虚拟机上创建文本文件2、将文本文件上传到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、启动Hive Metastore服务2、启动Hive客户端3、基于HDFS文件创建外部表4、利用Hive SQL…