#include <iostream>
using namespace std;
//军队
class Troops{
public:
virtual void fight(){ cout << "Strike back!" << endl; }
};
//陆军
class Army :public Troops{
public:
void fight(){ cout << "--Army is figthing!" << endl; }
};
//99A主战坦克
class _99A :public Army{
public:
void fight(){ cout << "----99A(Tank) is fighting!" << endl; }
};
//武直10武装直升机
class WZ_10 :public Army{
public:
void fight(){ cout << "----WZ-10(Helicopter) is fighting!" << endl; }
};
//长剑10巡航导弹
class CJ_10 :public Army{
public:
void fight(){ cout << "----CJ-10(Missile) is fighting!" << endl; }
};
//空军
class AirForce :public Troops{
public:
void fight(){ cout << "--AirForce is fighting!" << endl; }
};
//J-20隐形歼击机
class J_20 :public AirForce{
public:
void fight(){ cout << "----J-20(Fighter Plane) is fighting!" << endl; }
};
//CH5无人机
class CH_5 :public AirForce{
public:
void fight(){ cout << "----CH-5(UAV) is fighting!" << endl; }
};
//轰6k轰炸机
class H_6K :public AirForce{
public:
void fight(){ cout << "----H-6K(Bomber) is fighting!" << endl; }
};
int main(){
Troops *p = new Troops;
p->fight();
//陆军
p = new Army;
p ->fight();
p = new _99A;
p ->fight();
p = new WZ_10;
p ->fight();
p = new CJ_10;
p ->fight();
//空军
p = new AirForce;
p->fight();
p = new J_20;
p->fight();
p = new CH_5;
p->fight();
p = new H_6K;
p->fight();
return 0;
}
/*
虚函数的由来
基类指针可以指向基类成员变量和成员函数
基类指针指向派生类时
只能指向派生类的成员变量,而不能指向其成员函数
除非在基类和派生类有一个同名函数,该函数被声明为虚函数,那么基类指针就能指向派生类成员函数
注:virtural关键字只需在声明时加上,而且基类某函数被声明为虚函数,那么所有派生类的所有同名函数都是虚函数
*/
虚函数的由来(详解见注释)
最新推荐文章于 2024-09-13 17:43:09 发布