多态的基本概念:
多态是C++面向对象三大特性之一
多态分为两类
1、静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名 ,那么这个我们之前都有用到过
2、动态多态: 派生类和虚函数实现运行时多态
静态多态和动态多态区别:
1、静态多态的函数地址早绑定 - 编译阶段确定函数地址
2、动态多态的函数地址晚绑定 - 运行阶段确定函数地址
示例代码:
#include<iostream> #include<string> using namespace std; class Animal { public: virtual void speak() { // 进行virtual修饰成员函数,变成虚函数,那么编译器在编译的时候就不能确定函数调用了。 cout << "动物在说话" << endl; } }; class Dog :public Animal{ public: void speak() { cout << "小狗在说话" << endl; } }; class Cat :public Animal { public: void speak() { cout << "小猫在说话" << endl; } }; void aaa(Animal & animal) { animal.speak(); } void test01() { Cat c1; aaa(c1); Dog d1; aaa(d1); } int main() { test01(); system("pause"); return 0; }
总结:
多态满足的条件:
1、有继承关系
2、子类重写父类中的虚函数
多态使用条件:
1、父类指针或引用指向子类对象
重写:函数返回值类型 函数名 参数列表 完全一致称为重写