Chapter 10 类的继承(上篇)

news2025/1/11 6:53:56

目的:了解三种继承方式,并清楚其中的差别

🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃

10.1 继承与派生的概念

1.面向对象技术强调软件的可重用性,所以C++语言提供了类的继承机制,解决了软件重用问题

3.类的继承的定义:一个新类从已有的类那里获得其已有的特性的现象,在C++中所谓的“继承“就是一个已存在的的类的基础上建立一个新的类

3.类的派生:从已有的类产生一个新的子类,称为类的派生

a:派生类继承了基类的所有数据成员和成员函数,其可以对成员做必要的增加或调整,且一个基类可以派生出多个派生类,每个派生类又可以作为基类在派生出新的派生类,一次基类和派生类是相对而言的,一代一代派生下去,即形成了类的继承层次结构

b:派生的分类:多级派生+单级派生

4.注意⚠️:

a:类的继承的角度是从派生类到基类

b:类的派生的角度是从基类到派生

c:这个已存在的类称为“基类(base class)”或“父类(father class)”,新建立的类称为“派生类(derived class)”或“子类(son class)”

d:基类与派生类总的就是一句话:派生类是基类的具体化,而基类则是派生类的抽象,这句话也体现类与对象的关系

🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃

10.2 派生类的声明方式

1.形式: class 派生类名:[继承方式] 基类名

           {

                  派生类新增加成员

            };

class Student : public Student
{
   public:
     void display_1()
     cout<<"true"<<endl;
}

2.继承方式包括:public(公用的)、private(私有的)、protected(受保护的),继承方式是可选的,如果不写此项,则默认为private(私有的)

🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃

10.3 派生类的构成

1.派生类的说明:

a:做基类的类必须要定义,其原因显而易见,每个派生都包含并且都可以访问其基类的成员,为了使用这些成员,派生类必须知道它们是谁

b:如果要声明,但不实现一个派生类,则只要声明类即可,不用加继承方式和基类的类型

class Derived:public Buse;//❌❌,在这种只声明不实现的情况是错误的
class Dervied;//正确的

c:派生类有两部分构成:继承+定义新的成员

d:友元关系、构造函数、析构函数是不能继承的

e:基类定义了静态成员,每个静态成员只有一个派生和基类都可使用

f:静态成员为public,派生类可用的,但若是private,则派生类是不可以使用的,后年我们也会提到访问属性,则在这里不过多追叙了

2.派生类的3个工作部分

a:从基类接收成员,派生类把基类(除友元关系、构造函数、析构函数)没有选择的都继承过来了

b:调整从基类接收的成员,无选择的接收基类成员是不可避免的,但是程序员可以对这些成员的属性进行某些调整,利用访问属性来间接达到不想接收的目的

c:在声明派生类时新增加的成员,这很重要,体现了派生类对基类功能的拓展,这一部分后面也有知识点会补充的

🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃

10.4 派生类成员的访问属性

1.基类成员和友元访问基类成员

2.派生类的成员和友元访问派生类自己新增加的成员

3.基类的成员函数访问派生类的成员,基类是不可以直接访问派生类的,不过可以通过虚函数实现

4.派生类的成员函数访问基类的成员,基类的私有成员派生类是不可访问的

5.在派生类外访问基类成员

6.三种方式继承的访问属性

7.4种访问属性:

a:公用的,派生类内类外都可以访问

b:受保护的,派生类可以访问,派生类外不可以访问,其下一层的派生类可以访问

c:私有的,派生类内可以访问,派生类外不能访问

d:不可访问的,派生类内外都不能访问

注意⚠️:无论哪一种继承方式,在派生类中是不能访问基类的私有成员,私有成员只能被本类的成员函数所访问,毕竟派生类与基类不是同一类的

共同学习,欢迎指正!

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

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

相关文章

【JVM】垃圾回收 GC

一、前言 垃圾回收&#xff08;Garbage Collection&#xff0c;GC&#xff09;是由 Java 虚拟机&#xff08;JVM&#xff09;垃圾回收器提供的一种对内存回收的一种机制&#xff0c;它一般会在内存空闲或者内存占用过高的时候对那些没有任何引用的对象不定时地进行回收。以避免…

imgaug库指南(26):从入门到精通的【图像增强】之旅(万字长文!)

引言 在深度学习和计算机视觉的世界里&#xff0c;数据是模型训练的基石&#xff0c;其质量与数量直接影响着模型的性能。然而&#xff0c;获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此&#xff0c;数据增强技术应运而生&#xff0c;成为了解决这一问题的…

在uni-app中使用sku插件,实现商品详情页规格展示和交互。

商品详情 - SKU 模块 学会使用插件市场&#xff0c;下载并使用 SKU 组件&#xff0c;实现商品详情页规格展示和交互。 存货单位&#xff08;SKU&#xff09; SKU 概念 存货单位&#xff08;Stock Keeping Unit&#xff09;&#xff0c;库存管理的最小可用单元&#xff0c;通…

电子签章服务器,如何解决无纸化最后一公里?

钉钉、飞书、企微、OA、ERP等主流企业办公系统&#xff0c;无法实现电子签章&#xff0c;往往审批后还要将合同文件打印出来再进行签章。实现无纸化办公的这最后一公里就成了难题。电子签章服务器的出现&#xff0c;提供了完美的解决方案。本文将从专业角度&#xff0c;探讨电子…

大模型压缩与优化的技术原理与创新方法

目录 前言1 模型压缩简介2 知识蒸馏3 模型剪枝3.1 结构化剪枝3.2 非结构化剪枝 4 模型量化4.1 浮点表示 vs 定点表示4.2 位数选择与性能影响4.3 量化技术 5 其他模型压缩方法5.1 Weight Sharing: 参数共享5.2 Low-rank Approximation: 低秩分解5.3 Architecture Search: 神经网…

C++ 设计模式之观察者模式

【声明】本题目来源于卡码网&#xff08;题目页面 (kamacoder.com)&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 前面的文章介绍了创建型模式和结构型模式&#xff0c;今天开始介绍行为型模式。 【简介】什么是…

Oracle AWR报告的生成和解读

Oracle AWR报告的生成和解读 一、AWR报告概念及原理 Oracle10g以后&#xff0c;Oracle提供了一个性能检测的工具&#xff1a;AWR&#xff08;Automatic Workload Repository 自动工作负载库&#xff09;这个工具可以自动采集Oracle运行中的负载信息&#xff0c;并生成与性能相…

评估文字识别准确性的方法与流程

随着信息技术的发展&#xff0c;文字识别技术在各个领域得到了广泛的应用。然而&#xff0c;在实际应用中&#xff0c;如何评估文字识别的准确性&#xff0c;一直是相关领域的一个难题。本文将介绍几种常用的文字识别准确性评估方法&#xff0c;以期为相关领域的研究提供参考。…

Excel 添加复选框或选项按钮(表单控件)

Excel 添加复选框或选项按钮&#xff08;表单控件&#xff09; 要添加复选框或选项按钮&#xff0c;需要使用功能区上的“开发工具”选项卡。 注意: 若要启用“开发工具”选项卡&#xff0c;请按照以下说明进行操作&#xff1a; 在 Excel 2010 和后续版本中&#xff0c;选择“…

主流视频压缩格式

主流的视频压缩格式有很多&#xff0c;它们各自适用于不同的应用场景&#xff0c;如在线流媒体、广播、存档等。 以下是一些广泛使用的视频压缩格式&#xff1a; H.264/AVC (Advanced Video Coding): 目前最为广泛使用的视频压缩标准之一&#xff0c;兼容性极佳&#xff0c;广泛…

【蓝桥杯日记】第二篇——递归问题的处理

目录 前言 递归 递归解决的问题 递归的三要素 递归的练习&#xff08;由浅入深&#xff09; 1.循环改为递归 2.斐波那契 3.汉诺塔问题 总结 前言 大家好呀&#xff01;我是大雄&#xff01;一个菜鸡&#xff01;接下来的几个月和大家分享一下自己在备战蓝桥中遇到的…

微信小程序(四)页面跳转

注释很详细&#xff0c;直接上代码 新增内容 1.相对路径页面跳转 2. 绝对路径页面跳转 index.wxml <!-- navigator是块级元素&#xff0c;占一整行 --> <!-- 页面跳转url&#xff0c;相对路径 --> <navigator url"../logs/logs"><button type&…

【现代密码学】笔记6--伪随机对象的理论构造《introduction to modern cryphtography》

【现代密码学】笔记6--伪随机对象的理论构造《introduction to modern cryphtography》 写在最前面6 伪随机对象的理论构造 写在最前面 主要在 哈工大密码学课程 张宇老师课件 的基础上学习记录笔记。 内容补充&#xff1a;骆婷老师的PPT 《introduction to modern cryphtogr…

Vue中的全局组件与局部组件

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介1. 全局组件的原理2. 局部组件的原理3. 组件注册的影响与考虑因素全局组件的使用场景&#xff1a;局部组件的使用场景&#xff1a; 4. 组合使用全局组件与局部组件 ⭐ 写在最后 ⭐ 专栏简介 Vue学习之旅的奇妙世界 欢迎大家来到 Vu…

Android 捕获native异常

11.使用google官方提供的breakpad 地址&#xff1a;Android 捕获native异常 https://github.com/google/breakpad 2.编译breakpad的so文件 2.1设置需要编译的架构 3.编译完&#xff0c;在build\intermediates\cmake\debug\obj目录下获取对应架构的so包 4.编译一个错误的so包…

MIT 6s081 lab3:page tables

Lab3: page tables 作业地址&#xff1a;Lab: page tables (mit.edu) 本实验的目标&#xff1a;修改页表、简化从用户态拷贝数据到内核态的方法 其实页表就几个操作&#xff1a;创建页表、添加PTE项&#xff0c;查找PTE项&#xff0c;清空PTE项&#xff0c;释放PTE对应的物理…

聚观早报 |一加Ace 3鸣沙金开售;地平线征程6将发布

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 1月16日消息 一加Ace 3鸣沙金开售 地平线征程6将发布 互动短剧《谍影成双》首曝PV 台积电发布四季度财报 保时捷…

JVM实战(21)——jstat实战(2)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

Proxy的使用方法和13种拦截操作

前言 proxy是ES6新推出的方法,功能很强大。属于元编程,也就是修改js本身的一些东西。可以对数组,对象,函数等引用类型的对象进行一些复杂的操作。 其中,大部分人应该最熟悉的莫过于vue3中使用proxy替换了defineProperty,而且还实现了本身defineProperty不能实现的一些东西。 …

Vue-API

$parent 和 $children $parent 父传子--在子组件中使用&#xff0c;放在计算属性、生命周期中&#xff1a; $children 子传父--方法中使用&#xff1a; $nextTick: $ref: 操作dom $set、$delete: