C++类与对象(3)Inheritance

主要结合菜鸟教程和上课内容学习。

基础知识

C++ 继承 | 菜鸟教程 (runoob.com)

一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。定义一个派生类,我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名,形式如下:

class derived-class: access-specifier base-class

其中,访问修饰符 access-specifier 是 public、protected 或 private 其中的一个,base-class 是之前定义过的某个类的名称。如果未使用访问修饰符 access-specifier,则默认为 private。

假设有一个基类 ShapeRectangle 是它的派生类,如下所示:

#include<iostream>using namespace std;//基类
class Shape
{public:void setWidth(int w){width = w;}void setHeight(int h){height = h;}protected:int width;int height;};//派生类
class Rectangle: public Shape
{public:int getArea(){return (width * height);}
};int main(void)
{Rectangle Rect;Rectangle.setWidth(5);Rectangle.setHeight(7);//输出对象的面积cout << "Total area: "<<Rect.getArea()<<endl;return 0;
}

当一个类派生自基类,该基类可以被继承为 public、protected 或 private 几种类型。继承类型是通过上面讲解的访问修饰符 access-specifier 来指定的。

我们几乎不使用 protected 或 private 继承,通常使用 public 继承。当使用不同类型的继承时,遵循以下几个规则:

  • 公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有保护成员来访问。
  • 保护继承(protected): 当一个类派生自保护基类时,基类的公有保护成员将成为派生类的保护成员。
  • 私有继承(private):当一个类派生自私有基类时,基类的公有保护成员将成为派生类的私有成员。

在上面的例子中,使用的是公有继承,Shape的公有成员和保护成员也是Rectangle的公有成员,所以Rectangle的公有成员有setWidth()和setHeight()两个方法,以及width和height。(感觉protected就是专门为“继承”而设计的,,,)

待补充。

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

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

相关文章

大数据软件,待补充

数据采集&#xff1a; 实时采集&#xff1a; Debezuim Debezuim是构建在 Apach Kafka之上&#xff0c;并提供Kafka连接器来监视特定的数据库管理(采集多种数据库) Canal canal 是阿里开发&#xff0c;用于实时采集Mysql 当中变化的数据 maxwell,flinkX,flinkCDC 离线采集&#…

【Crypto | CTF】BugKu 简单的RSA

天命&#xff1a;这题也不算简单了&#xff0c;要反编译&#xff0c;要灵活一点 首先收到pyc文件&#xff0c;拿去反编译出来&#xff0c;可以用在线反编译&#xff0c;也可以用工具反编译 在线&#xff1a;python反编译 - 在线工具 工具&#xff1a;https://download.csdn.n…

[设计模式Java实现附plantuml源码~行为型]算法的封装与切换——策略模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…

设计模式--总结和对比

设计模式原则 设计原则一句话归纳目的 开闭原则(OCP) (Open-Close) 对扩展开放&#xff0c;对修改关闭减少维护带来新的风险 依赖倒置原则(DIP) (Dependence Inversion) 高层不应该依赖底层更利于代码结构的升级 扩展 单一职责原则(SRP) (Simple Responsibility) 一个类只干一…

我的NPI项目之Android Camera (四)-- 对应Camera tuning的一些理解

Camera作为产品的一个核心部件&#xff0c;在产品竞争力方面有着不容争辩的地位。所以&#xff0c;选择一款合适的Camera模组并发挥出模组的性能对项目极其重要。 在Camera的选型方面&#xff0c;我不用多说&#xff0c;国内前五的有&#xff1a;舜宇&#xff0c;丘钛&#xff…

消息中间件相关介绍

一、消息中间件相关知识 1、概述 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能&#xff0c;成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件&#xff0c;如老牌的ActiveMQ、RabbitMQ&am…

【iOS ARKit】ARWorldMap

ARWorldMap 用于存储 ARSession 检测扫描到的空间信息数据&#xff0c;包括地标&#xff08;Landmark&#xff09;、特征点&#xff08;Feature Point&#xff09;、平面&#xff08;Plane&#xff09;等&#xff0c;以及使用者的操作信息&#xff0c;如使用者添加的 ARAnchor …

数据采集设备:安装过程的要点与注意事项

在当今的数据驱动世界&#xff0c;数据采集设备在各行各业中发挥着至关重要的作用。从工业生产到环境监测&#xff0c;再到医疗诊断&#xff0c;数据采集设备为我们提供了大量有价值的信息。然而&#xff0c;要想充分发挥这些设备的潜力&#xff0c;首先需要确保它们被正确地安…

黑马程序员——接口测试——day03

目录&#xff1a; Potman断言 Postman断言简介Postman常用断言 断言响应状态码断言包含某字符串断言JSON数据Postman断言工作原理Postman关联 简介实现步骤核心代码创建环境案例1案例2Postman参数化 简介数据文件简介编写数据文件 CSV文件JSON文件导入数据文件到postman读取数…

杂题——亲密数

题目描述 两个不同的自然数A和B&#xff0c;如果整数A的全部因子(包括1&#xff0c;不包括A本身)之和等于B&#xff1b;且整数B的全部因子(包括1&#xff0c;不包括B本身)之和等于A&#xff0c;则将整数A和B称为亲密数。求3000以内的全部亲密数。 输入格式 无 输出格式 3000以内…

【AHK】68键键盘键位布局优化/esc改退格键/回车键

本人习惯使用~作为退格键&#xff0c;但是由于keychron 68键的布局只能用esc平替~来修改&#xff0c;然后也将回车键通过alt和大小写锁定键一起触发 esc::bs ;次步骤与下面步骤相对应&#xff0c;如果是用send bs方式则下面的不生效^esc:: ;通过建立 保留esc功能 send {esc} re…

啊丢的刷题记录手册(洛谷题单排序篇)

1.洛谷题P1923 求第k小的数 题目描述 输入 n&#xff08;1≤n<5000000 且 n 为奇数&#xff09;个数字ai​&#xff08;1≤ai​<109&#xff09;&#xff0c;输出这些数字的第 k 小的数。最小的数是第 0 小。 请尽量不要使用 nth_element 来写本题&#xff0c;因为本题…

换档控制支架的尺寸优化

前言 本示例使用优化模块&#xff0c;通过在保持原始重量的同时改变壳体厚度&#xff0c;使冲压钣金支架中的应变能之和最小化&#xff08;使刚度最大化&#xff09;。 本页讨论 前言应用描述Abaqus建模方法和仿真技术文件参考 应用描述 本示例说明了汽车变速箱连杆中使用的…

亿道丨三防平板pad丨三防平板是指哪三防丨三防工业级平板电脑

三防工业级平板电脑成为许多行业中的重要工具。本文将介绍三防工业级平板电脑的特点以及其在各个领域中的广泛应用。 三防工业级平板电脑的特点 三防工业级平板电脑是指具备防水、防尘和防震功能的平板电脑。这些特点使得它们能够在恶劣环境中工作&#xff0c;如沙尘飞扬的工地…

sockaddr结构体、sockaddr_in结构体和gethostbyname函数

sockaddr结构体 sockaddr结构体是在网络编程中经常使用的一个数据结构&#xff0c;用来表示套接字地址。它是一个通用的地址结构&#xff0c;可以用于不同的协议&#xff08;如IPv4、IPv6、UNIX等&#xff09;。 在C语言中&#xff0c;sockaddr结构体定义如下&#xff1a; s…

交换两个整数

交换两个整数 题目描述&#xff1a;解法思路&#xff1a;解法代码&#xff1a;运行结果&#xff1a; 题目描述&#xff1a; 写⼀个函数Swap&#xff0c;可以交换两个整数的内容。注意必须实现成函数完成。 输入2个整数&#xff0c;调用自定义函数Swap&#xff0c;完成2个整数的…

C++面试 -操作系统-代码能力:用户态和内核态的基本概念、区别

目录 一、基本概念 概念&#xff1a; 区别&#xff1a; 二、Windows示例 基础介绍 用户态到内核态的切换过程&#xff1a; 程序实例 三、Linux示例 特权级别&#xff1a; 用户态到内核态的切换过程&#xff1a; 调度和中断处理&#xff1a; 程序实例 总结 在操作系…

Java多线程面试题(三)

Java多线程面试题&#xff08;三&#xff09; 前言1、Thread 类中的 yield 方法有什么作用&#xff1f;2、Java 线程池中 submit() 和 execute()方法有什么区别&#xff1f;3、Java 中的 ReadWriteLock 是什么&#xff1f;4、可以直接调用 Thread 类的 run ()方法么&#xff1f…

【升级JDK21】遇到:服务配置文件不正确, 或构造处理程序对象

RROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile(default-compile) on project tr-public-opinion-collector-start: Compilation failure [ERROR] 服务配置文件不正确, 或构造处理程序对象javax.annotation.processing.Processor:…

【HarmonyOS】鸿蒙开发之Stage模型-基本概念——第4.1章

Stage模型-基本概念 名词解释 AbilityStage:应用组件的“舞台“ UIAbility:包含UI界面的应用组件&#xff0c;是系统调度的基本单元 WindowStage:组件内窗口的“舞台“ Window&#xff1a;用来绘制UI页面的窗口 HAP:Harmony Ability Package(鸿蒙能力类型的包) HSP:Harmony Sh…