5.6

嵌入式面向对象程序开发(10)

虚函数:解决向上转型的完整性,可以通过基类的指针调用派生类的方法;

虚函数实现前提:函数的覆盖/遮蔽;

工程意义:实现了多态(使用同一个实例,调用同一个接口产生不同的效果/使用同一接口,传递不同的实例,执行不同的操作)

多态的作用:提高代码的扩展性(新增新的功能时,不修改之前的代码,只增加新的代码)

实现多态的前提:1、继承(覆盖/函数遮蔽),2、虚函数,3、用基类的指针指向子对象

函数重载也是一种多态;

用一个基类对象接受子类对象无法发生多态;只有基类指针接收子类对象的地址或者指针,才会发生多态;
嵌入式面向对象程序开发(10)
嵌入式面向对象程序开发(10)

纯虚函数—抽象类:一个类里如果有纯虚函数,那么这个类就是抽象类;

特点:不能实例化;<继承抽象类的子类“必须”实现父类纯虚函数>

抽象类作用:充当功能接口或者类接口;

嵌入式面向对象程序开发(10)

C++向上转型:子类对象赋值给基类对象,子类对象的指针赋值基类的对象指针(必须有多态)

Dynamic_cast:如果转换失败返回nullptr;

嵌入式面向对象程序开发(10)
嵌入式面向对象程序开发(10)
嵌入式面向对象程序开发(10)

子类转换为父类:向上转型,使用dynamic_cast<type_id>(expression),这种转换相对来说比较安全不会有数据的丢失;
父类转换为子类:向下转型,可以使用强制转换,这种转换时不安全的,会导致数据的丢失,原因是父类的指针或者引用的内存中可能不包含子类的成员的内存。

相关文章:

  • 2022-12-23
  • 2022-01-04
  • 2021-06-06
  • 2021-10-20
  • 2021-11-02
  • 2021-06-02
  • 2021-09-03
  • 2021-07-29
猜你喜欢
  • 2021-06-20
  • 2021-05-07
  • 2021-12-24
  • 2021-09-08
  • 2021-06-14
  • 2021-08-10
  • 2021-07-11
相关资源
相似解决方案