C++ 多态

一同 两 不同
不同子类对象,同一消息,不同操作

参考文章
https://blog.csdn.net/qq_39412582/article/details/81628254

1. 虚函数、非虚函数 在父类、子类之间的调用

(1)同名函数几种情况

  • 虚函数 virtual
    • 一个在父类一个在子类
      重写
    • 同在父类 或 同在子类
      重载
  • 非虚函数
    • 一个在父类一个在子类
      重载
    • 同在父类 或 同在子类
      重载

问题集 1. override 关键字 在函数声明后面出现,是否可以在函数定义的后面? override是重写,所以一般出现在子类 重写父类 的虚函数 。

参考文章
https://blog.csdn.net/qq_33169689/article/details/101721404
https://blog.csdn.net/liyuye/article/details/9570051

2. 父子类 贡 外部而言 和 内部而言

(1)外部而言

①基本用法_1

父类指针 ---> 虚函数(参数列表)

②关键指标
父类指针 指向哪个 子类。(1)如果指向的子类重写了这个被调用的虚函数,则就调用子类中被重写的虚函数;(2)如果指向的子类没有重写这个被调用的虚函数,则就调用父类本身的虚函数。


①基本用法_2

父类指针 ---> 非虚函数(参数列表)

②关键指标

是否还需要看 子类 是否重载了 这个函数?

如果结果还是和上面 一致,则 关键字 Virtual 的意义 何在?

(2)内部而言

是否需要加上, 类名::

① 子类函数体 具体定义部分,可直接调用父类非虚函数?

②如果调用的这个函数,子类 重载 了呢?

(1)如果这个非虚函数,在子类中 没有重载,可以在子类函数体具体定义部分中,直接写这个 非虚函数的函数名,就可以调用到父类 这个非虚函数。(已实践证明); (2)如果这个非虚函数,在子类中 被重载,???


①子类函数体 具体定义部分,可直接调用父类虚函数?

②如果调用的这个 虚函数,子类 重写 了呢?

你可能感兴趣的:(C++ 多态)