C++上机实验|多态性编程练习

news2024/12/27 7:35:28

1.实验目的

(1)理解多态性的概念。
(2)掌握如何用虚函数实现动态联编
(3)掌握如何利用虚基类。

2.实验内容

设计一个飞机类 plane,由它派生出歼击机类fighter和轰炸机类 bomber,歼击机类fighter 和轰炸机类bomber 又共同派生出歼轰机(多用途战斗机)。利用虚函数和虚基类描述飞机类及其派生的类族。

3. 参考代码

#include <iostream>	
using namespace std;
class  plane                	//飞机
{
private:
	double aerofoil;      	//机翼
	double  airframe;     	//机身
	double  empennage;    	//尾翼
	double voyage;        	//航程
	int  passenger;       	//乘员数
public:
	plane(double,double,double,double,int);
	virtual void display();
};
void plane::display()
{
cout<<"\t"<<aerofoil<<"\t"<<airframe<<"\t"<<empennage<<"\t"<<voyage<<"\t"<<passenger;
}
plane::plane(double wing,double frame,double tail,double distance,int num)
{
	aerofoil=wing; 
	airframe=frame; 
	empennage=tail; 
	voyage=distance;
	passenger=num;
}
class  fighter:public plane           //歼击机
{
private:
   int missile;  //导弹数
public:
   fighter(double,double,double,double,int,int);
   void fight();
   void display();
};
fighter::fighter(double wing,double frame,double tail,double distance,
            int num,int load_missile):plane(wing,frame,tail,distance,num)
{
   missile=load_missile;
}
void fighter::fight()
{ 
      cout<<"Fight!"<<endl;
}
void fighter::display()
{
   cout<<"This is a fighter!"<<endl;
   plane::display();
   cout<<"\t"<<missile<<endl;
}
class  bomber:public plane            	//轰炸机
{
private:
   double bomb;       					//载弹量
public:
  bomber(double, double,double,double,int,double);
  void atack();
  double getbomb();
  void display();
};
bomber::bomber(double wing,double frame,double tail,double distance, 
int num, double load_bomb):plane(wing,frame,tail,distance,num)
{
   bomb=load_bomb;
}
void bomber::atack()
{
   cout<<"Atack!"<<endl;
}
double bomber::getbomb()
{
   return bomb;
}
void bomber::display()
{
   cout<<"This is a bomber!"<<endl;
   plane::display();
   cout<<"\t"<<bomb<<endl;
}
class  fighter_bomber:virtual public fighter,virtual public bomber
 //歼轰机:多用途战斗机
{
public:
	fighter_bomber(double, double,double,double,int,int,double);
	void display();
};
void fighter_bomber::display()
{
   cout<<"This is a fighter_bomber!"<<endl;
   fighter::display();
   cout<<"\t"<<getbomb()<<endl;
   fight();
   atack();
}

fighter_bomber::fighter_bomber(double wing,double frame,double tail, 
double distance,int num,int load_missile,double load_bomb): fighter 
(wing,frame,tail,distance,num,load_missile),bomber(wing,frame,tail,
distance,num,load_bomb)
{ }
void main()
{
	fighter f(10.0, 6.0, 2.5,1800,1,8);          	//歼击机
	f.display();
	bomber b(30,9,6,12000,12,6000);              		//轰炸机
	b.display();
	fighter_bomber fb(20,7,3.2,4000,2,6,2500);  	//歼轰机
	fb.display();
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2235235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

岛屿数量 广搜版BFS C#

和之前的卡码网深搜版是一道题 力扣第200题 99. 岛屿数量 题目描述 给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的矩阵&#xff0c;你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成&#xff0c;并且四周都是水域。…

动态规划 之 路径问题 算法专题

一. 不同路径 不同路径 状态表示 dp[i][j] 表示走到[i][j]位置, 有几种不同的路径状态转移方程 以离[i][j] 最近的位置划分问题 1.从[i - 1][j] 到[i][j], 到[i][j]位置的不同路径数 就是和 到[i - 1][j]位置的不同路径数相同, 即dp[i][j] dp[i - 1][j] 2.从[i][j - 1] 到[i…

别名路径联想设置

如何使用/进行路径提示&#xff1f; 找到jsconfig.json文件&#xff0c;如何项目中没有的话&#xff0c;自行创建 {"compilerOptions": {"paths": {"/*": ["./src/*"]}},"exclude": ["node_modules", "dis…

40V耐压 降压恒压芯片 SL3061替换XL4301 支持2.5A电流 内置MOS管

一、基本性能参数对比 二、替换可行性分析 耐压能力&#xff1a;SL3061的耐压能力为40V&#xff0c;而XL4301的工作电压范围为8V至40V&#xff0c;最大耐压可能更高&#xff08;达到45V&#xff09;。在多数应用场景下&#xff0c;SL3061的耐压能力应能满足需求&#xff0c;但…

字节青训-小D的 abc 变换问题

问题描述 小D拿到了一个仅由 "abc" 三种字母组成的字符串。她每次操作会对所有字符同时进行以下变换&#xff1a; 将 a 变成 bc将 b 变成 ca将 c 变成 ab 小D将重复该操作 k 次。你的任务是输出经过 k 次变换后&#xff0c;得到的最终字符串。 例如&#xff1a;对于初…

设计模式09-行为型模式2(状态模式/策略模式/Java)

5.4 状态模式 5.4.1 状态模式的定义 1.模式动机&#xff1a;有些对象具有多种状态&#xff0c;这些状态在某些情况下能够相互转换&#xff0c;对象在不同的状态下将具有不同的行为&#xff0c;将拥有状态的对象中和状态的行为分离。 2.模式定义&#xff1a;允许一个对象在其…

Postman上传图片如何处理

打开Postman&#xff0c;创建一个新的请求 URL: http://90.104.232.49:80/dev-api/appcommon/upload 如果有解密进入上传就在请求头添加 点击“Body”选项卡。 选择“form-data”类型。 在“KEY”列中输入文件字段的名称&#xff0c;例如file。 在“VALUE”列中&#xff0…

MongoDB笔记03-MongoDB索引

文章目录 一、前言1.1 概述1.2 MongoDB索引使用B-Tree还是BTree&#xff1f;1.3 B 树和 B 树的对比1.4 总结 二、索引的类型2.1 单字段索引2.2 复合索引2.3 其他索引 三、索引的管理操作3.1 索引的查看3.2 索引的创建3.2.1 单字段索引3.2.2 复合索引 3.3 索引的移除3.3.1 指定索…

MongoDB Shell 基本命令(三)聚合管道

管道含义 类似Linux中的管道&#xff0c;前一个命令的输出作为后一个命令的输入。 显示网络连接、路由表和网络接口统计信息 netstat -ano -netstat:network statistics 网络统计 -a:显示所有连接和监听端口&#xff0c;包括所有活动的TCP和UDP连接。 -n:以数字形式显示地址…

2024年10月国产数据库大事记-墨天轮

本文为墨天轮社区整理的2024年10月国产数据库大事件和重要产品发布消息。 目录 2024年10月国产数据库大事记 TOP102024年10月国产数据库大事记&#xff08;时间线&#xff09;产品/版本发布代表厂商大事记信创数据库上市公司2024年Q3财报 达梦数据&#xff1a;2024年前三季度…

SQL Server 日志记录

SQL Server是一个关系数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;旨在有效地存储、组织、检索和操作大量结构化数据。SQL Server日志是监控数据库活动、排查问题和确保数据一致性的基础&#xff0c;这些日志记录了SQL Server实例中发生的事件的时间顺序。它们充当…

yolo v5 开源项目

项目地址&#xff1a;https://gitcode.net/EricLee/yolo_v5

队列详解

目录 队列队列的概念及结构队列的实现代码 队列功能的实现队列的尾插void QueuePush(Queue*pq, QDataType x);结构体封装指针typedef struct Queue总结 代码 队列的头删void QueuePop(Queue* pq)代码 队列的初始化void QueueInit(Queue* pq)代码 队列的销毁void QueueDestroy(Q…

ViT模型复现项目实战

项目源码获取方式见文章末尾&#xff01; 600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

是时候用开源降低AI落地门槛了

过去三十多年&#xff0c;从Linux到KVM&#xff0c;从OpenStack到Kubernetes&#xff0c;IT领域众多关键技术都来自开源。开源技术不仅大幅降低了IT成本&#xff0c;也降低了企业技术创新的门槛。 那么&#xff0c;在生成式AI时代&#xff0c;开源能够为AI带来什么&#xff1f;…

【C++打怪之路Lv13】- “继承“篇

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;重生之我在学Linux&#xff0c;C打怪之路&#xff0c;python从入门到精通&#xff0c;数据结构&#xff0c;C语言&#xff0c;C语言题集&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持…

数据特征工程:如何计算Teager能量算子(TEO)? | 基于SQL实现

目录 0 TKEO能量算子 1 数据准备 2 特征求解 3 小结 0 TKEO能量算子 TEO(Teager能量算子),由Kaiser于1990年代提出的非线性分析方法(参见Kaiser, 1990; 1993),是一种有效的非线性信号处理工具,它能即时反映信号能量的变化。通过计算相邻采样点的值,TEO能够迅速跟…

淘宝/天猫探店大冒险:用taobao.item_search_shop API把宝贝一网打尽

想象一下&#xff0c;你是一位勇敢的探险家&#xff0c;手拿藏宝图&#xff08;店铺ID&#xff09;&#xff0c;准备潜入神秘的淘宝/天猫店铺&#xff0c;寻找那些隐藏在角落里的宝贝。今天&#xff0c;我们要用taobao.item_search_shop API这张神奇的藏宝图&#xff0c;带你走…

D60【python 接口自动化学习】- python基础之数据库

day60 数据库定义 学习日期&#xff1a;20241106 学习目标&#xff1a;MySQL数据库-- 128&#xff1a;数据库定义 学习笔记&#xff1a; 无处不在的数据库 数据库如何存储数据 数据库管理系统&#xff08;数据库软件&#xff09; 数据库和SQL的关系 总结 数据库就是指数据…

2024年最佳解压软件推荐:轻松管理压缩文件的必备工具

在当今数字化时代&#xff0c;文件的传输和存储变得日益频繁&#xff0c;解压软件在文件管理中扮演着至关重要的角色。 随着数据量的不断增长&#xff0c;大文件的压缩和解压需求也越来越高。解压软件能够将大容量的文件压缩成较小的体积&#xff0c;便于存储和传输&#xff0…