1、多态是C++面向对象三大特征之一,多态分类:
- 静态多态:函数重载和运算符重载都属于静态多态, 复用函数名
- 动态多态:派生类和虚函数实现运行时多态
2、区别:
- 静态多态函数地址早绑定,编译阶段确定函数地址
- 动态多态的函数地址晚绑定,运行阶段确定函数地址
3、动态多态满足条件
- 有继承关系
- 子类重写父类的虚函数(重写:返回值、函数名、形参列表 都完全一样)
4、动态多态的使用
父类的指针或者引用 指向子类对象
void doSpeak(Animal &animal) //Animal &animal = cat;
{
animal.speak();
}
//Animal时父类
void test()
{
Cat cat;
doSpeak(cat);
//输出猫的speak
Dog dog;
doSpeak(dog);
//输出狗的speak;
}