标签:第十二天 函数 继承 子类 多态 C++ 学习 父类 重写
今日学习内容 :继承 多态 虚函数和抽象函数
继承:
优点:可以实现代码复用,节省代码量
分类:单继承 多继承
单继承:
语法:
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
抽象类:
形成的场景:一个类中存在虚函数 子类没有重写父类提供的所有纯虚函数
特点:不能实例化对象
子类可以实例化:
标签:第十二天,
函数,
继承,
子类,
多态,
C++,
学习,
父类,
重写
From: https://www.cnblogs.com/xiangyangzhenshoushi/p/17354690.html