C++ 多态的实现

it2024-12-19  14

//多态是C++面向对象三大特性之一 //多态分为两类 //·静态多态:函数重载和运算符重载属于静态多态,复用函数名 //·动态多态:派生类和虚函数实现运行时多态 //区别 //·静态多态的函数地址早绑定 - 编译阶段确定函数地址 //·动态多态的函数地址晚绑定 - 运行阶段确定函数地址 #include<iostream> using namespace std; //动物类 class Animal { public: //虚函数 virtual void speak() { cout<<"动物在说话"<<endl; } }; //猫类 class Cat:public Animal { public: //重写 函数返回值类型 函数名 参数列表 完全相同 void speak() { cout<<"小猫在说话"<<endl; } }; //狗类 class Dog:public Animal { public: void speak() { cout<<"小狗在说话"<<endl; } }; //地址早绑定 在编译阶段确定函数地址 //如果想执行让猫说话,那么这个函数地址就不能提前绑定,需要运行阶段进行绑定 //动态多态满足条件 //1、有继承关系 //2、子类重写父类虚函数 //动态多态使用 //父类的指针或者引用 执行子类对象 //当子类重写父类的虚函数 //子类中的虚函数表 内部会替换成子类的虚函数地址 //当父类的指针或者引用指向子类对象时候 发生多态 void doSpeak(Animal &animal) { animal.speak(); } void test01() { Cat cat; Dog dog; doSpeak(cat); } int main() { test01(); return 0; }
最新回复(0)