1、多态: 基类指针可以按照基类的方式来做事,也可以按照派生类的方式来做事,它有多种形态,或者说有多种表现方式,我们将这种现象称为多态(Polymorphism)。
C++中虚函数的唯一用处就是构成多态。有了虚函数,基类指针指向基类对象时就使用基类的成员(包括成员函数和成员变量),指向派生类对象时就使用派生类的成员
2、多态的目的:可以通过基类指针对所有派生类(包括直接派生和间接派生)的成员变量和成员函数进行“全方位”的访问,尤其是成员函数。如果没有多态,我们只能访问成员变量。
3、多态的应用:小项目基本用不到多态和设计模式之类。通过游戏例程举例:假设你正在玩一款军事游戏,敌人突然发动了地面战争,于是你命令陆军、空军及其所有现役装备进入作战状态
#include <iostream>
using namespace std;
//军队
class Troops
{
public:
virtual void fight(){ cout<<"Strike back!"<<endl; }
};
//陆军
class army : public Troops
{
virtual void fight(){ cout<<"army is fighting!"<<endl; }
}
//坦克
class tank :public army
{
virtual void fight(){ cout<<"tank is fighting!"<<endl; }
}
//装甲机
class suptank :public army
{
virtual void fight(){ cout<<"suptank is fighting!"<<endl; }
}
//空军
class airforce:public Troops
{
virtual void fight(){ cout<<"airforce is fighting!"<<endl; }
}
//歼10
class jian_10:public airforce
{
void fight(){cout<<"jian_10 is fighting!"<<endl; }
}
//无人机6号
class wu_10:public airforce
{
void fight(){cout<<"wu_10 is fighting!"<<endl; }
}
//
int main
{
Troops*p = new Troops;
p->fight();
p = new army;
p->fight();
p = new tank;
p->fight();
p = new suptank;
p->fight();
p = new airforce;
p->fight();
p = new jian_10;
p->fight();
p = new wu_10;
p->fight();
return 0;
}
//这样 一个基类指针就可以指向所有的派生类