(1)多态的分类
多态分为两种:
1)静态多态:函数重载和运算符重载属于静态多态,复用函数名
2)动态多态:派生类和虚函数实现运行时多态
(2)静态多态和动态多态的区别:
1)静态多态的函数地中早绑定,编译阶段确定函数地址
2)动态多态的函数地址晚绑定,运行阶段确定函数地址
(3)父类对象的指针(或者引用)=子类对象的指针(或子类对象)//允许这样使用
(4)动态多态的满足条件:
1)继承关系
2)子类重写父类的虚函数
PS:静态多态和动态多态的场景不是由指针或者引用来区别,决定它是动态还是静态的根本原因,根本原因是:模板,宏,重载,重写。
动态多态的使用
1)用父类的指针(或引用)=子类的指针(或子类对象)
#include<iostream>
using namespace std;
class animal
{
public:
void print1();
virtual void print2();
};
class