多态分为两类
- 静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名
- 动态多态: 派生类和虚函数实现运行时多态
静态多态和动态多态区别:
- 静态多态的函数地址早绑定 - 编译阶段确定函数地址
- 动态多态的函数地址晚绑定 - 运行阶段确定函数地址 当子类继承父类中的函数后,函数早绑定,调用该函数,即时传入对象是子类,也会按父类执行; 使用virtual将父类中的函数置为虚函数,就会晚绑定; 多态满足条件: 1、有继承关系 2、子类重写(函数返回值,参数列表,函数名完全相同)父类中的虚函数
多态使用: 父类指针或引用指向子类对象。(这点非常重要,子类多态调用时必须使用父类指针或者引用)