2770 - 飞机类plane(虚函数)

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

设计一个飞机类plane,由它派生出歼击机fighter类和轰炸机类bomber类,利用虚函数描述飞机类及其派生类族。
飞机类包含:机翼、机身、尾翼、航程、乘员数属性,并且有显示函数display。
歼击机类增加导弹数属性同时有显示函数display。

轰炸机类增加载弹量属性同时有显示函数display。

主函数如下:

int main(){<br />

double aerofoil, airframe, empennage, voyage;//机翼、机身、尾翼、航程
int passenger;//乘员数
int daodan;//导弹数
int zaidan;//载弹量
plane *vp;
 char type;
while(cin>>type)
{
if(type=='f')
{cin>>aerofoil>>airframe>>empennage>>voyage>>passenger>>daodan;

fighter fighter1(aerofoil,airframe,empennage,voyage,passenger,daodan);//创建歼击机
vp=&fighter1;
vp->display();//显示歼击机
}
else if(type=='b')
{cin>>aerofoil>>airframe>>empennage>>voyage>>passenger>>zaidan;
bomber bomber1(aerofoil,airframe,empennage,voyage,passenger,zaidan);//创建轰炸机
vp=&bomber1;
vp->display();//显示轰炸机
}
else
break;}
return 0;
}

题目输入

若以f开头,接下来输入的是歼击机的属性,若以b开头,接下来输入的是轰炸机的属性。

题目输出

对应输出派生类族的信息。

输入/输出样例

输入格式

f 10 6 2.5 1800 1 8
b 20 7 3.2 4000 2 6000

输出格式

This is a fighter!
10 6 2.5 1800 1 8
This is a bomber!
20 7 3.2 4000 2 6000

C++解答

#include<iostream>
using namespace std;
class plane//飞机
{
protected:
double aerofoil;
double airframe;
double empennage;
double voyage;
int passenger;
public:
void virtual display()=0;
plane(double aerofoil1,double airframe1,double empennage1,double voyage1,int passenger1)
{
aerofoil=aerofoil1;
airframe=airframe1;
empennage=empennage1;
voyage=voyage1;
passenger=passenger1;
}
};
void plane::display()
{
cout<<aerofoil<<" "<<airframe<<" "<<empennage<<" "<<voyage<<" "<<passenger<<endl;
}
class fighter:public plane//歼击机
{
public:
fighter(double aerofoil,double airframe,double empennage,double voyage,int passenger,
		int daodan):plane(aerofoil,airframe,empennage,voyage,passenger){
missile=daodan;
}
void display()
{cout<<"This is a fighter!"<<endl;
cout<<aerofoil<<" "<<airframe<<" "<<empennage<<" "<<voyage<<" "<<passenger<<" "<<missile<<endl;
}
protected:
int missile;
};
class bomber:public plane//轰炸机
{
public:
bomber(double aerofoil,double airframe,double empennage,double voyage,int passenger,int zaidan):
	  plane(aerofoil,airframe,empennage,voyage,passenger){
bomb=zaidan;
}
void display(){
cout<<"This is a bomber!"<<endl;
cout<<aerofoil<<" "<<airframe<<" "<<empennage<<" "<<voyage<<" "<<passenger<<" "<<bomb<<endl;
}
protected:
int bomb;
};


int main(){
double aerofoil, airframe, empennage, voyage;//机翼、机身、尾翼、航程
int passenger;//乘员数
int daodan;//导弹数
int zaidan;//载弹量
plane *vp;
 char type;
while(cin>>type)
{
if(type=='f')
{cin>>aerofoil>>airframe>>empennage>>voyage>>passenger>>daodan;
		
fighter fighter1(aerofoil,airframe,empennage,voyage,passenger,daodan);//创建歼击机
	vp=&fighter1;
	vp->display();//显示歼击机
}
else if(type=='b')
{cin>>aerofoil>>airframe>>empennage>>voyage>>passenger>>zaidan;
	bomber bomber1(aerofoil,airframe,empennage,voyage,passenger,zaidan);//创建轰炸机
	vp=&bomber1;
	vp->display();////显示轰炸机
}
else
break;}
return 0;
}