多态是C++面向对象三大特性之一
省流:
- 多态满足条件
- 多态使用条件
*重写:函数返回值类型 函数名 参数列表 完全一致称为重写
分类 & 区别
静态多态
- 函数重载 和 运算符重载属于静态多态,复用函数名
- 静态多态的函数地址早绑定 - 编译阶段确定函数地址
动态多态
- 派生类 和 虚函数实现运行时多态
- 动态多态的函数地址晚绑定 - 运行阶段确定函数地址
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #include<iostream> using namespace std;
class Animal { public: virtual void speak() { cout << "动物在说话" << endl; } };
class Cat :public Animal { public: virtual void speak() { cout << "小猫在说话" << endl; } };
class Dog :public Animal { public: void speak() { cout << "小狗在说话" << endl; } };
void doSpeak(Animal &a) { a.speak(); }
int main() { Cat c; doSpeak(c); Dog d; doSpeak(d); return 0; }
|