当前位置: 首页 > news >正文

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安装 &#xff08;1&#xff09;点击运行MySQL安装文件 &#xff08;2&#xff09;选择安装类型 我们选择自定义安装&#xff0c;点击Next。 说明 Develop Default&#xff1a;默认开发类型&#xff0c;安装MySQL服务器以及开发MySQL应用所需要的工…...

漫谈分布式唯一ID

文章目录 本系列前言UUIDDB自增主键Redis incr命令号段模式雪花算法 本系列 漫谈分布式唯一ID&#xff08;本文&#xff09;分布式唯一ID生成&#xff08;二&#xff09;&#xff1a;leaf分布式唯一ID生成&#xff08;三&#xff09;&#xff1a;uid-generator&#xff08;待完…...

【复旦微FM33 MCU 开发指南】ADC

前言 本系列基于复旦微FM33LC0系列单片机的DataSheet编写&#xff0c;旨在提供手册解析和开发指南。 本文章及本系列其他文章将持续更新&#xff0c;本系列其它文章请跳转【复旦微FM33 MCU 外设开发指南】总集篇 本文章最后更新日期&#xff1a;2024/11/09 全文字数&#xff…...

ORB_SLAM3安装

ORB_SLAM3安装 一.前期准备1.1ubuntu查看当前版本的命令1.2 根据ubuntu版本&#xff0c;更新下载软件源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语言中的一种轻量级线程&#xff0c;也成为协程&#xff0c;由Go运行时管理。它是Go语言并发编程的核心概念之一。Goroutine的设计使得在Go中实现并发编程变得非常简单和高效。 以下是一些…...

全文检索ElasticSearch到底是什么?

学习ElasticSearch之前&#xff0c;我们先来了解一下搜索 1 搜索是什么 ① 概念&#xff1a;用户输入想要的关键词&#xff0c;返回含有该关键词的所有信息。 ② 场景&#xff1a; ​ 1互联网搜索&#xff1a;谷歌、百度、各种新闻首页&#xff1b; ​ 2 站内搜索&#xff…...

FPGA实现串口升级及MultiBoot(五)通过约束脚本添加IPROG实例

本文目录索引 一个指令和三种方式通过约束脚本添加Golden位流工程MultiBoot位流工程验证example1总结代码缩略词索引: K7:Kintex 7V7:Vertex 7A7:Artix 7MB:MicroBlaze上一篇文章种总结了MultiBoot 关键技术,分为:一个指令、二种位流、三种方式、四样错误。针对以上四句话我…...

文献阅读 | Nature Methods:使用 STAMP 对空间转录组进行可解释的空间感知降维

文献介绍 文献题目&#xff1a; 使用 STAMP 对空间转录组进行可解释的空间感知降维 研究团队&#xff1a; 陈金妙&#xff08;新加坡科学技术研究局&#xff09; 发表时间&#xff1a; 2024-10-15 发表期刊&#xff1a; Nature Methods 影响因子&#xff1a; 36.1&#xff0…...

【模块化大作战】Webpack如何搞定CommonJS与ES6混战(1-3)

在前端开发中&#xff0c;模块化是一个重要的概念&#xff0c;不同的模块化标准有不同的特点和适用场景。webpack 同时支持 CommonJS 和 ES6 Module&#xff0c;因此需要理解它们在互操作时 webpack 是如何处理的。 同模块化标准 如果导出和导入使用的是同一种模块化标准&…...

[NewStar 2024] week5完结

每次都需要用手机验证码登录&#xff0c;题作的差不多就没再进过。今天把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 是一个非常强大的集成开发环境&#xff0c;它提供了大量的快捷键来加速开发者的日常工作。这里为您整理了一份 IntelliJ IDEA 的快捷键大全&#xff0c;包含了编辑、导航、重构、运行等多个方面的快捷键。请注意&#xff0c;这些快捷键是基于 Windows 版本的 Int…...

暮雨直播 1.3.2 | 内置直播源,频道丰富,永久免费

暮雨直播是一款内置直播源的电视直播应用程序&#xff0c;提供丰富的频道内容&#xff0c;包括教学、首页、一线、博主、解说、动漫、堆堆等。该应用的内置直播源持续更新维护&#xff0c;确保用户可以稳定地观看各种电视频道。暮雨直播承诺永久免费&#xff0c;为用户提供了一…...

单相锁相环,原理与Matlab实现

单相锁相环基本原理 单相锁相环的基本原理图如下所示&#xff0c; u α u_\alpha uα​ u β u_\beta uβ​经Park变换、PI控制实现对角频率 ω \omega ω和角度 θ \theta θ的估算。不同锁相环方案之间的差异&#xff0c;主要表现在正交电压 u β u_\beta uβ​的生成&#x…...

PICO+Unity 用手柄点击UI界面

如果UI要跟随头显&#xff0c;可将Canvas放置到XR Origin->Camera Offset->Main Camera下 1.Canvas添加TrackedDeviceGraphicRaycaster组件 2.EventSystem移动默认的Standard Input Module&#xff0c;添加XRUIInputModule组件 3.&#xff08;可选&#xff09;设置射线可…...

Rust移动开发:Rust在iOS端集成使用介绍

iOS调用Rust 上篇介绍了 Rust移动开发&#xff1a;Rust在Android端集成使用介绍, 这篇主要看下iOS上如何使用Rust&#xff0c;Rust可以给移动端开发提供跨平台&#xff0c;通用组件支持。 该篇适合对iOS、Rust了解&#xff0c;想知道如何整合调用和编译的&#xff0c;如果想要…...

虚拟现实技术在旅游行业的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 虚拟现实技术在旅游行业的应用 虚拟现实技术在旅游行业的应用 虚拟现实技术在旅游行业的应用 引言 虚拟现实技术概述 定义与原理…...

《Java核心技术 卷I》Swing使用颜色

使用颜色 使用Graphics2D类的setPaint方法可以为图形上下文上的所有后续的绘制操作选择颜色。例如&#xff1a; g2.setPaint(Color.RED); g2.drawString("Warning!",100,100); 可以用一种颜色填充一个封闭图像(例如&#xff1a;矩形或椭圆)的内部。为此&#xff…...

神书《从零构建大模型》分享,尚未发布,GitHub标星22k!!

《从零构建大模型》是一本即将于今年10月底发布的书籍&#xff0c;github已经吸引了惊人的21.7k标星&#xff01;作者是威斯康星大学麦迪逊分校的终身教授&#xff0c;在GitHub、油管、X上拥有大量粉丝&#xff0c;是一位真正的大佬。 本书免费获取地址 在本书中&#xff0…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...