C++上机实验|多态性编程练习
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();
}

相关文章:
C++上机实验|多态性编程练习
1.实验目的 (1)理解多态性的概念。 (2)掌握如何用虚函数实现动态联编 (3)掌握如何利用虚基类。 2.实验内容 设计一个飞机类 plane,由它派生出歼击机类fighter和轰炸机类 bomber,歼击机类fighter 和轰炸机类bomber 又共同派生出歼轰机(多用途战斗机)。利用虚函数和虚基类描述…...
php伪协议介绍
PHP伪协议共有12种,具体如下: file:// — 访问本地文件系统http:// — 访问 HTTP(s) 网址ftp:// — 访问 FTP(s) URLsphp:// — 访问各个输入/输出流(I/O streams)php://stdin, php://stdout 和 php://stderrphp://inputphp://outputphp://memory 和 php://tempphp://filte…...
『事善能』MySQL基础 — 2.MySQL 5.7安装(一)
1、通过msi安装软件进行MySQL安装 (1)点击运行MySQL安装文件 (2)选择安装类型 我们选择自定义安装,点击Next。 说明 Develop Default:默认开发类型,安装MySQL服务器以及开发MySQL应用所需要的工…...
漫谈分布式唯一ID
文章目录 本系列前言UUIDDB自增主键Redis incr命令号段模式雪花算法 本系列 漫谈分布式唯一ID(本文)分布式唯一ID生成(二):leaf分布式唯一ID生成(三):uid-generator(待完…...
【复旦微FM33 MCU 开发指南】ADC
前言 本系列基于复旦微FM33LC0系列单片机的DataSheet编写,旨在提供手册解析和开发指南。 本文章及本系列其他文章将持续更新,本系列其它文章请跳转【复旦微FM33 MCU 外设开发指南】总集篇 本文章最后更新日期:2024/11/09 全文字数ÿ…...
ORB_SLAM3安装
ORB_SLAM3安装 一.前期准备1.1ubuntu查看当前版本的命令1.2 根据ubuntu版本,更新下载软件源1.3 先下载git1.4 vim语法高亮1.5 常见的linux命令 二.ORB-SLAM3下载2.1 ORB_SLAM3源码下载2.2 安装依赖库2.2.1 依赖库2.2.2 安装pangolin2.2.3 安装opencv2.2.4 Eigen3安装…...
GoLang协程Goroutiney原理与GMP模型详解
本文原文地址:GoLang协程Goroutiney原理与GMP模型详解 什么是goroutine Goroutine是Go语言中的一种轻量级线程,也成为协程,由Go运行时管理。它是Go语言并发编程的核心概念之一。Goroutine的设计使得在Go中实现并发编程变得非常简单和高效。 以下是一些…...
全文检索ElasticSearch到底是什么?
学习ElasticSearch之前,我们先来了解一下搜索 1 搜索是什么 ① 概念:用户输入想要的关键词,返回含有该关键词的所有信息。 ② 场景: 1互联网搜索:谷歌、百度、各种新闻首页; 2 站内搜索ÿ…...
FPGA实现串口升级及MultiBoot(五)通过约束脚本添加IPROG实例
本文目录索引 一个指令和三种方式通过约束脚本添加Golden位流工程MultiBoot位流工程验证example1总结代码缩略词索引: K7:Kintex 7V7:Vertex 7A7:Artix 7MB:MicroBlaze上一篇文章种总结了MultiBoot 关键技术,分为:一个指令、二种位流、三种方式、四样错误。针对以上四句话我…...
文献阅读 | Nature Methods:使用 STAMP 对空间转录组进行可解释的空间感知降维
文献介绍 文献题目: 使用 STAMP 对空间转录组进行可解释的空间感知降维 研究团队: 陈金妙(新加坡科学技术研究局) 发表时间: 2024-10-15 发表期刊: Nature Methods 影响因子: 36.1࿰…...
【模块化大作战】Webpack如何搞定CommonJS与ES6混战(1-3)
在前端开发中,模块化是一个重要的概念,不同的模块化标准有不同的特点和适用场景。webpack 同时支持 CommonJS 和 ES6 Module,因此需要理解它们在互操作时 webpack 是如何处理的。 同模块化标准 如果导出和导入使用的是同一种模块化标准&…...
[NewStar 2024] week5完结
每次都需要用手机验证码登录,题作的差不多就没再进过。今天把week5解出的部分记录下。好像时间过去很久了。 Crypto 没e也能完 这题给了e,p,q,dp,dq。真不清楚还缺啥 long_to_bytes(pow(c,dp,p)) 格格你好棒 给了a,b和提示((p2*r) * 3*a q) % b < 70 其中r…...
IntelliJ IDEA的快捷键
IntelliJ IDEA 是一个非常强大的集成开发环境,它提供了大量的快捷键来加速开发者的日常工作。这里为您整理了一份 IntelliJ IDEA 的快捷键大全,包含了编辑、导航、重构、运行等多个方面的快捷键。请注意,这些快捷键是基于 Windows 版本的 Int…...
暮雨直播 1.3.2 | 内置直播源,频道丰富,永久免费
暮雨直播是一款内置直播源的电视直播应用程序,提供丰富的频道内容,包括教学、首页、一线、博主、解说、动漫、堆堆等。该应用的内置直播源持续更新维护,确保用户可以稳定地观看各种电视频道。暮雨直播承诺永久免费,为用户提供了一…...
单相锁相环,原理与Matlab实现
单相锁相环基本原理 单相锁相环的基本原理图如下所示, u α u_\alpha uα u β u_\beta uβ经Park变换、PI控制实现对角频率 ω \omega ω和角度 θ \theta θ的估算。不同锁相环方案之间的差异,主要表现在正交电压 u β u_\beta uβ的生成&#x…...
PICO+Unity 用手柄点击UI界面
如果UI要跟随头显,可将Canvas放置到XR Origin->Camera Offset->Main Camera下 1.Canvas添加TrackedDeviceGraphicRaycaster组件 2.EventSystem移动默认的Standard Input Module,添加XRUIInputModule组件 3.(可选)设置射线可…...
Rust移动开发:Rust在iOS端集成使用介绍
iOS调用Rust 上篇介绍了 Rust移动开发:Rust在Android端集成使用介绍, 这篇主要看下iOS上如何使用Rust,Rust可以给移动端开发提供跨平台,通用组件支持。 该篇适合对iOS、Rust了解,想知道如何整合调用和编译的,如果想要…...
虚拟现实技术在旅游行业的应用
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 虚拟现实技术在旅游行业的应用 虚拟现实技术在旅游行业的应用 虚拟现实技术在旅游行业的应用 引言 虚拟现实技术概述 定义与原理…...
《Java核心技术 卷I》Swing使用颜色
使用颜色 使用Graphics2D类的setPaint方法可以为图形上下文上的所有后续的绘制操作选择颜色。例如: g2.setPaint(Color.RED); g2.drawString("Warning!",100,100); 可以用一种颜色填充一个封闭图像(例如:矩形或椭圆)的内部。为此ÿ…...
神书《从零构建大模型》分享,尚未发布,GitHub标星22k!!
《从零构建大模型》是一本即将于今年10月底发布的书籍,github已经吸引了惊人的21.7k标星!作者是威斯康星大学麦迪逊分校的终身教授,在GitHub、油管、X上拥有大量粉丝,是一位真正的大佬。 本书免费获取地址 在本书中࿰…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
