运行时期多态 在运行的时候才能够确定被调用的函数
运行时期多态主要是通过继承和虚函数实现的
更底层一点,运行时期多态是通过虚函数表来实现的。
下面是一个多态的例子
#include <iostream>
#include <vector>
using namespace std;
class Animal{
public:
virtual void shout()=0; //纯虚函数
};
class Cat : public Animal{
public:
void shout(){ //重写父类的shout函数
cout<<"喵喵"<<endl;
}
};
class Dog : public Animal{
public:
void shout(){ //重写父类的shout函数
cout<<"汪汪"<<endl;
}
};
int main() {
vector<Animal*> animals;
animals.push_back(new Cat);
animals.push_back(new Cat);
animals.push_back(new Dog);
animals.push_back(new Dog);
for(auto one : animals){ //可以对Animal的所有子类一起调用shout函数
one->shout(); //不同的指针对象 调用不同的实现
}
return 0;
}