C++类的继承与派生概念

        派生和继承是自然界普遍存在的一种现象。例如,“猫”和“白猫”。当人们谈及“猫”时,知道它有4条腿,1条尾巴,抓老鼠,为哺乳动物。如谈论“白猫”时,它也是猫,只不过增加了一个新的特征,即它的毛是白色的。也就是说“白猫就是毛色是白色的猫”。在这里“猫”和“白猫”之间存在一条重要内在的联系。“白猫”是一类特殊的“猫”,“白猫”从“猫”那里继承了“猫”的全部特征,同时又增加了一个新特征。
        下面用C++语言来描述以上问题。可以定义描述“猫”的类 cat 和“白猫”的类 whitecat ,为了准确描述这两个类之间的关系,C++提供了一种继承和派生机制,在这种机制下,类whitecat自动拥有类cat的所有成员,该类的每一个对象都是类cat的对象,也就是实现了“每一个白猫都是猫”。

从一个类派生出另一个类时,原始类称为基类,继承类称为派生类。
(1)原始类类称为基类(或父类,Base class);
(2)继承的新类称为派生类(子类,Derived class)。

派生类是通过对基类进行扩充和修改得到的。基类的除构造和析构函数外所有数据成员和函数成员自动成为派生类的成员。所谓扩充,指的是在派生类中可以添加新的成员变量和成员函数;所谓修改,指的是派生类中可以重写从基类继承得到的成员。

        派生类同样也可以作为基类再派生新的类。一个基类可以派生出一个或多个派生类,而每个派生类又可作为基类再派生出新的派生类,如此一代一代地派生下去,便形成了类的继承和派生层次结构。
        下图为交通工具继承关系

1.png

        图反映了交通工具的继承和派生关系。上下层之间的关系可以看作基类和派生类之间的关系。
        继承和派生,它建立一种is-a关系,即派生类对象也是一个基类对象,对基类对象执行的操作,也可以对派生类对象执行。
        当从现有类中派生出新类时,派生类可以有以下几种变化:
(1)增加新的数据成员;
(2)增加新的成员函数;
(3)重新定义已有成员函数;
C++中的继承关系可以分为单继承和多重继承两种,如下图所示。
(1)如果一个派生类只有一个直接的基类,那么称这种继承为单继承;
(2)如果某个类的直接基类有两个或两个以上,则称该继承为多重继承。

1.png

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

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

相关文章

Harmony开发 List/Scroll 组件最后一个item显示不全或布局显示不完整

今天在做Harmony开发的时候遇到一个问题,List组件的最后一个item显示不全,如下图,item-9显示不出来,显示了一部分 这个页面的代码结构如下: Column() {Row() {Text(文本1).fontSize(15).fontColor(Color.Black)Text(文本2).font…

论文浅尝 | THINK-ON-GRAPH:基于知识图谱的深层次且可靠的大语言模型推理方法...

笔记整理:刘佳俊,东南大学硕士,研究方向为知识图谱 链接:https://arxiv.org/pdf/2307.07697.pdf 1. 动机 本文是IDEA研究院的工作,这篇工作将知识图谱的和大语言模型推理进行了结合,在每一步图推理中利用大…

2024视频号·短视频+直播极简培训班:抓住视频号风口,流量红利

课程下载:2024视频号短视频直播极简培训班:抓住视频号风口,流量红利-课程网盘链接提取码下载.txt资源-CSDN文库 更多资源下载:关注我。 课程内容: 02 1、为什么视频号有机会,而不是抖音?(直播2024.03.0…

攻防世界---misc---can_has_stdio?

1、下载附件是一个没有后缀的文件,尝试将后缀改为txt发现里面有一些特殊字符的编码 2、查阅资料得知它是一种编程代码 3、知道了它是什么代码之后,我们就去解码(网址:El Brainfuck (copy.sh)) 4、 flag{esolangs_for_f…

Centos 7之Hadoop搭建

介绍 Hadoop Distributed File System简称 HDFS,是一个分布式文件系统。HDFS 有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throu…

2024年Node.js精选:50款工具库集锦,项目开发轻松上手(五)

不得不说,Node.js的强大离不开那150万个NPM包。没有NPM,Node.js依然可以使用,但绝不会如此强大。在这个系列文章中,我们探讨了每个开发者都应该了解的一些常用NPM包。在本系列的最后一篇文章中,我将介绍第41到第50个推…

QT 创建文件 Ui 不允许使用不完整类型,可以尝试添加一下任何头文件

#include "debug.h" #include "qmessagebox.h" #pragma execution_character_set("utf-8") //QT 创建文件 Ui 不允许使用不完整类型,尝试添加一下任何头文件,或者添加ui_xx.h头文件 debug::debug(QWidget *parent) : QDialog(p…

番外篇 | YOLOv5改进之结合结构重参数化网络RepVGG:极简架构,SOTA性能,让VGG式模型再次伟大!

前言:Hello大家好,我是小哥谈。ResNet、DenseNet等复杂的多分支网络可以增强模型的表征能力,使得训练效果更好,但是多分支的结构在推理的时候效率严重不足。看起来二则不可兼得。能否两全其美?RepVGG通过结构重参数化的方法,在训练的时候使用多分支结构,而在推理的时候多…

【动手学深度学习】多层感知机模型选择、欠拟合和过拟合研究详情

目录 🌊1. 研究目的 🌊2. 研究准备 🌊3. 研究内容 🌍3.1 多层感知机模型选择、⽋拟合和过拟合 🌍3.2 基础练习 🌊4. 研究体会 🌊1. 研究目的 多层感知机模型选择:比较不同多层…

2D 生存角色扮演游戏《Cryptara Conquest》即将登录 Eclipse

接下来是为狂热的游戏玩家们带来的又一个惊喜。《Cryptara Conquest》是一款以故事叙述和冒险元素作为驱动的 2D 生存 RPG 游戏,该游戏即将在 Eclipse 平台上发布。该游戏将经典老派游戏魅力与现代生存机制相结合,旨在通过怀旧、创新和区块链技术融合&am…

Linux网络编程:网络层协议|IP

前言: 网络层协议解决什么问题 当我们在上层实现了应用层协议将字符流数据转化为结构体数据,在传输层完成了通信的实现,数据的传输,但是数据最终还是得从本主机输出,从网络中进入到远端的另外一台主机。 网络层协议I…

瘦”AP与“胖”AP的区别

1. AP基本概念 无线AP,简单说就是一个无线接入点,它是无线网络的关键部分,就像是无线网络的大脑。这个无线AP啊,它跟无线路由器、无线网关、无线网桥这些设备差不多,都是干一件事儿的。它的作用就是把家里或公司里用线…

Redis 异常三连环

本文针对一种特殊情况下的Reids连环异常,分别是下面三种异常: NullPointerException: Cannot read the array length because “arg” is nullJedisDataException: ERR Protocol error: invalid bulk lengthJedisConnectionException: Unexpected end o…

续航1977公里的穿越之旅:比亚迪秦L DM-i试驾体验

5月31日,在西安这座古老而又充满活力的城市,一群自媒体驾驶着比亚迪秦L DM-i,踏上了从祖国西北到东南的穿越之旅。 在本次试驾活动中,自媒体们不仅要体验这款新能源车型的驾驶性能,而且还要亲自验证它在实际道路和极端…

基于聚类和回归分析方法探究蓝莓产量影响因素与预测模型研究

🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 目录 背景数据说明数据来源思考 正文数据预处理数据读取数据预览数据处理 相关性分析聚类分析数据处理确定聚类数建立k均值聚类模型 多元线性回…

【专利 超音速】基于分类模型的轻量级工业图像关键点检测方法

申请号CN202311601629.7公开号(公开)CN117710683A申请日2023.11.27申请人(公开)超音速人工智能科技股份有限公司发明人(公开)张俊峰(总); 杨培文(总); 沈俊羽; 张小村 摘要 本发明涉及一种基于分类模型的…

【Makefile笔记】小白入门篇

【Makefile笔记】小白入门篇 文章目录 【Makefile笔记】小白入门篇所需组件一、简单了解Makefile1.Makefile简介2.Makefile 原理 二、为什么要使用Makefile1.解决编译时链库的不便2.提高编译效率,缩短编译时间(尤其是大工程) 三、Makefile语法…

vue 使用 Vxe UI vxe-print 实现复杂的 Web 打印,支持页眉、页尾、分页的自定义模板

Vxe UI vue 使用 Vxe UI vxe-print 实现复杂的 Web 打印,支持页眉、页尾、分页的自定义模板 官方文档 https://vxeui.com 查看 github、gitee 页眉-自定义标题 说明:vxe-print-page-break标签用于定义分页,一个标签一页内容,超…

Rust 性能分析

都说Rust性能好,但是也得代码写得好,猜猜下面两个代码哪个快 . - 力扣&#xff08;LeetCode&#xff09; use std::collections::HashMap; use lazy_static::lazy_static;lazy_static! {static ref DIGIT: HashMap<char, usize> {let mut m HashMap::new();for c in …

最新版点微同城源码34.7+全套插件+小程序前后端

带全套插件 自己耐心点配置一下插件 可以H5可以小程序 一款专属的同城服务平台对于企业和个人而言&#xff0c;无疑是拓展业务、提升服务品质的重要一环。点微同城源码搭配全套插件&#xff0c;以及完善的小程序前后端&#xff0c;将为您的业务发展提供强大支持 源码免费下载…