今日学习内容 :继承 多态 虚函数和抽象函数
继承:
优点:可以实现代码复用,节省代码量
分类:单继承 多继承
单继承:
语法:
class 子类类名:继承访问修饰符 父类类名
{
成员
};
父类:

子类:

继承:
继承修饰符:
public protected private
当继承修饰是 public时 访问权限是 public protected private
当继承修饰是 protected时 访问权限是 protected private
当继承修饰是private是 访问权限是private
继承过程中 构造函数的使用:子类不会继承构造函数
调用
隐式调用父类构造函数:在程序员没有在子类构造函数中手动调用父类构造函数的时候自动调用父类的无参构造(默认构造)
重定义:
这是父类的Say函数


这是子类的Say函数

子类隐藏从父类继承的Say函数,使用自己的Say函数
重写:
虚函数:父类提供虚函数可以供子类重写


这是子类重写的Move函数
virtual和override可以隐藏
子类重写从父类继承到的函数,实现的是覆盖

重写和重定义的区别:重定义实现的是隐藏 重写实现的是覆盖
多继承:

会出现二义性的问题:

解决放方法是:添加域名

陵形继承:
缺点:资源浪费,二义性不明确
可以借助虚继承解决 二义性不明确的问题
父类

v1 v2 继承q

V3 继承v1 v2

这个时候四个类占用的内存空间如下


这就出现了浪费资源的现象
解决浪费资源现象的方法是:虚继承

之后的内存就会节省很多
v1 v2 的内存变为20 v3的内存变为24是因为 virtual占4个内存

多态:
优点:方便程序员开发
分类:静态多态和动态多态
静态多态:
函数重载
运算符重载
动态多态:
发生前提:
存在继承关系 发生在堆区 父类提供虚函数 子类重写父类的虚函数
定义:
父类指针指向子类类型的对象,调用父类函数,展现子类形态
武器父类

武器子类继承父类


虚函数和抽象函数
虚函数:虚函数 纯虚函数
纯虚函数语法:
viritual 函数返回类型 函数名称(参数列表)=0

抽象类:
形成的场景:一个类中存在虚函数 子类没有重写父类提供的所有纯虚函数
特点:不能实例化对象


子类可以实例化:

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人