多态性主要体现在虚函数的调用
在C++中,虚函数的调用使用的是动态绑定,也有人说是晚捆绑,也就是在程序运行时才决定调用的函数。
上面的讲法比较抽象,举个例子
#include <iostream>
using namespace std;
class Bird
{
public:
virtual void fly()
{
cout << "Bird can fly" << endl;
}
};
class Duck : public Bird
{
public:
void fly()
{
cout << "Duck can't fly" << endl;
}
};
class Chicken : public Bird
{
public:
void fly()
{
cout << "Chicken can't fly" << endl;
}
};
void main()
{
Bird* birdOne = new Duck();
birdOne->fly();
Bird* birdTwo = new Chicken();
birdTwo->fly();
Bird birdThree;
birdThree.fly();
}
去掉 virtual,则结果是:
Bird can fly
Bird can fly
Bird can fly