polymorphism.cpp
#include <iostream>
using namespace std;
/*
*
*多态:1.有继承关系 2.子类重写父类的虚函数
*
*父类的指针 或者 引用 指向子类对象
*
*/
class animal{
public:
virtual void speak()//底层用的函数指针实现虚函数 运行时指向子类的方法
{
cout<<"animal is speaking"<<endl;
}
};
class cat:public animal{
public:
void speak()//重写父类的虚函数
{
cout<<"cat is speaking"<<endl;
}
};
void test(animal &a)//animal &a=c 实际上c来调用speak方法
{
a.speak();
}
int main()
{
cat c;
test(c);
return 0;
}
运行结果: cat is speaking
多态条件:
- 父子继承关系
- 父类的引用 或者 指针 指向子类
- 父类定义虚函数
- 子类重写虚函数