多态的基本概念
多态是C++面向对象三大特性之一
多态分为两类
- 静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名
- 动态多态: 派生类和虚函数实现运行时多态
静态多态和动态多态区别:
- 静态多态的函数地址早绑定 - 编译阶段确定函数地址
- 动态多态的函数地址晚绑定 - 运行阶段确定函数地址
1 #include <iostream> 2 using namespace std; 3 //animal class 4 class animal 5 { 6 public: 7 //虚函数 8 virtual void speak() 9 { 10 cout << "动物在说话" << endl;//不加virtual就是早绑定,加了就是晚绑定 11 } 12 }; 13 //cat class 14 class cat : public animal 15 { 16 public: 17 //重写 函数返回值类型 函数名 参数列表 完全相同 18 void speak() 19 { 20 cout << "小猫在说话" << endl; 21 } 22 }; 23 //dog class 24 class dog : public animal 25 { 26 public: 27 void speak() 28 { 29 cout << "小狗在说话" << endl; 30 } 31 }; 32 //执行说话的函数 33 //地址早绑定 在编译阶段确定函数地址 34 //如果想执行让猫说话 那么这个函数地址就不能提前绑定 需要在运行阶段进行绑定,也就是地址晚绑定 35 36 //动态多态满足条件 37 //1.得有继承关系 38 //2.子类重写父类虚函数 39 40 //动态多态的使用 41 //父类的指针或引用 执行子类的对象 42 void dospeak(animal& Animal)//animal & Animalv= cat; 43 { 44 Animal.speak(); 45 } 46 void test01() 47 { 48 cat ca; 49 dospeak(ca); 50 dog dogg; 51 dospeak(dogg); 52 } 53 int main() 54 { 55 test01(); 56 }
标签:函数,对象,多态,静态,地址,animal,class From: https://www.cnblogs.com/zaiyewujiang/p/16667451.html