多态
动态多态
动态多态的满足条件:
- 存在继承关系;
- 子类需要重写父类的虚函数。
虚函数:父类的函数在定义的时候在返回类型前面添加 virtual 关键字。
重写:指的是在子类编写新的函数,但是返回类型、函数名、形参列表完全相同,函数体可以不同。
动态多态的使用:
利用父类的指针或者引用来执行子类的对象。
动态多态的底层
纯虚函数与抽象类
virtual void func() = 0;
形如上面的函数称为 纯虚函数 ,拥有纯虚函数的类称为 抽象类 。抽象类是天然的父类,因为它不能实例化对象。在抽象类中的纯虚函数事实上提供了一个接口,子类分别通过这个接口实现各自的功能。
而继承了抽象类的子类必须在类中重写纯虚函数,否则这个子类也被认为是抽象类而不能实例化对象。
因此,当我们有一个类不实现任何功能而希望所有继承它的子类各自实现功能的时候,我们可以写成抽象类。
class AbstractDrinking
{