当前位置: 首页 > backend >正文

第五章----继承

1.1继承和派生的基本概念

继承:在定义一个新的类B时,如果该类与某个已有的类A相似(类B拥有A的全部特点),那么就可以把A作为一个基类,而把B作为基类的一个派生类(也称子类)

派生类是通过对基类进行修改和扩充得到,在派生类中可以扩充新的成员变量和成员函数。

派生类一经定义后,可以独立使用,不依赖于基类

派生类拥有基类的全部成员函数和成员变量,不论是private、protected、public

在派生类的各个成员函数中,不能访问基类中的private成员

【派生类对象的内存空间】

eg。学籍管理

1.2继承关系和复合关系

类的两种关系

使用继承关系的例子

使用复合关系

eg.写一个小区养狗管理程序,需要写一个“业主”类,还需要写一个“狗”类,假定狗只有一个主人,但一个业主可以有最多10条狗

以上做法编译无法通过

这个写法也还是不对的

关键在于如何维护不同的狗相同的主人

1.3覆盖和保护成员

【覆盖】:派生类可以定义一个和基类成员同名的成员

在派生类中访问这类成员时,缺省的情况(不交代是基类还是派生类)是访问派生类中定义的成员,要在派生类中访问由基类定义的同名成员时,要使用作用域符号::

【类的保护成员】

友元函数(friend function)是一个定义在类外部的函数,但它被声明为该类的“朋友”,因此可以访问这个类的所有私有(private)和受保护(protected)成员。这意味着,如果一个函数被声明为某个类的友元函数,它确实可以访问该类的protected成员变量。

int main() {Derived d;// cout << d.protectedVar; // 错误:'int Base::protectedVar' 是 protected 的return 0;
}

1.4派生类的构造函数

 

【派生类对象的构造函数里面怎么去初始化从基类继承得到的那些私有成员?】

  注:派生类的析构函数被执行时,执行完派生类的析构函数后,自动调用基类的析构函数

1.5公有继承的赋值兼容原则

注:如果派生方式是public或者protected,则上述三条不可行

【直接基类和间接基类】

声明派生类的时候,只需要列出它的直接基类

派生类沿着类的层次自动向上继承它的间接基类

派生类的成员包括:

1)派生类自己定义的成员2)直接基类中的所有成员3)所有间接基类的全部成员

http://www.xdnf.cn/news/287.html

相关文章:

  • 通俗理解MCP(Model Context Protocol)和A2A(Agent2Agent)
  • Java 序列化与反序列化终极解析
  • 每日两道leetcode
  • 4.17-4.18学习总结 多线程
  • STP协议中的四种端口状态
  • 熵权法+TOPSIS+灰色关联度综合算法(Matlab实现)
  • 在 Babylon.js 中实现智能异步资源加载队列管理
  • 力扣DAY56-59 | 热100 | 回溯:子集、电话号码的字母组合、组合总和、括号生成
  • 【裁判文书网DES3数据解密】逆向分析
  • windwos脚本 | 基于scrcpy,只投声音、只投画面
  • MySQL中高级语法
  • 博客标题栏添加一个 About Me
  • RUI桌面TV版最新版免费下载-安卓电视版使用教程
  • 二叉树理论基础
  • static关键字
  • qt QGroupButton 实现两个QPushButton的互斥
  • 动态计算FPS(每秒帧数)的方法
  • Jsp技术入门指南【六】jsp脚本原理及隐式对象
  • 关于AI提示工程的详解,分点说明其核心概念、关键技巧和应用场景
  • 语音合成之二TTS模型损失函数进化史
  • 极狐GitLab 项目和群组的导入导出速率限制如何设置?
  • Linux 文件查找终极指南:find, locate, grep 等命令详解
  • 18-算法打卡-哈希表-两数之和-leetcode(1)-第十八天
  • 智能体时代的产业范式确立,中国企业以探索者姿态走出自己的路
  • [密码学实战]详解gmssl库与第三方工具兼容性问题及解决方案
  • Python语言基础教程(上)4.0
  • 15.4K Star!Vercel官方出品,零基础构建企业级AI聊天机器人
  • 进程(转账,卖票)
  • C#核心笔记——(六)框架基础
  • 【MySQL】数据库和表的操作详解