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

C++day6(多态实现动物园的讲解员和动物表演的相关介绍、用函数模板实现不同数据类型的交换功能)

1.比喻:动物园的讲解员和动物表演

想象一下你去了一家动物园,看到了许多不同种类的动物,如狮子、大象、猴子等。现在,动物园里有一位讲解员,他会为每种动物表演做简单的介绍。

在这个场景中,我们可以将动物比作是不同的类,而每种动物表演则是类中的函数。而讲解员则是一个基类,他可以根据每种动物的特点和表演,进行相应的介绍。

具体过程如下:

 定义一个基类 Animal,其中有一个虚函数 perform(),用于在子类中实现不同的表演行为。

#include <iostream>using namespace std;//基类Animal
class Animal
{
private:string name;
public://无参构造函数Animal(){}//有参构造函数Animal(string name):name(name){}//纯虚函数,用来实现各种动物的不同表演行为virtual void perform() = 0;//虚析构函数virtual ~Animal(){cout << "Animal::析构函数" << endl;}
};// 子类 Lion,狮子表演
class Lion:public Animal
{
public://无参构造函数Lion(){}//有参构造函数Lion(string name):Animal(name){}void perform(){cout << "狮子表演! " << endl;}//析构函数~Lion(){cout << "Lion::析构函数" << endl;}
};// 子类 Elephant,大象表演
class Elephant:public Animal
{
public://无参构造函数Elephant(){}//有参构造函数Elephant(string name):Animal(name){}void perform(){cout << "大象表演!" << endl;}//析构函数~Elephant(){cout << "Elephant::析构函数" << endl;}
};// 子类 Monkey,猴子表演
class Monkey:public Animal
{
public://无参构造函数Monkey(){}//有参构造函数Monkey(string name):Animal(name){}void perform(){cout << "猴子表演!" << endl;}//析构函数~Monkey(){cout << "Monkey::析构函数" << endl;}
};int main()
{Animal *p = new Lion("lion表演");p->perform();delete p;Animal *p1 = new Elephant("elephant表演");p1->perform();delete p1;Animal *p2 = new Monkey("monkey表演");p2->perform();delete p2;return 0;
}

2.用函数模板实现不同数据类型的交换功能

#include <iostream>using namespace std;//创建函数模板
template  <typename T>
void fun(T &a, T &b)
{T temp;temp = a;a = b;b = temp;
}int main()
{int a = 10, b = 20;fun(a,b);cout << a << " " << b << endl;double c = 1.3,d = 1.4;fun(c,d);cout << c << " " << d << endl;return 0;
}

相关文章:

C++day6(多态实现动物园的讲解员和动物表演的相关介绍、用函数模板实现不同数据类型的交换功能)

1.比喻&#xff1a;动物园的讲解员和动物表演 想象一下你去了一家动物园&#xff0c;看到了许多不同种类的动物&#xff0c;如狮子、大象、猴子等。现在&#xff0c;动物园里有一位讲解员&#xff0c;他会为每种动物表演做简单的介绍。 在这个场景中&#xff0c;我们可以将动…...

多线程学习之生产者和消费者与阻塞队列的关系

生产者和消费者 概述&#xff1a; 生产者消费者问题&#xff0c;实际上主要是包含了两类线程&#xff1a; 生产者线程用于生产数据消费者线程用于消费数据 生产者和消费者之间通常会采用一个共享的数据区域&#xff0c;这样就可以将生产者和消费者进行解耦&#xff0c; 两…...

JAVA语言代入电商平台api接口拼多多根据关键词获取商品列表示例

拼多多根据关键词获取商品接口的意义&#xff1b; 实现商品搜索&#xff1a;通过关键词搜索商品API接口&#xff0c;电商平台可以为消费者提供一个简单、快捷的商品搜索功能。用户只需输入关键词&#xff0c;就可以得到与该关键词相关的商品列表。 提供便捷的商品搜索服务&…...

Centos7更新glibc2.18

Centos7更新glibc2.18 查看glibc版本下载解压glibc2.18编译安装结果验证 查看glibc版本 # 查看glibc版本 ldd --version下载解压glibc2.18 参考: https://blog.csdn.net/qq_39295044/article/details/86685789 https://blog.csdn.net/myhes/article/details/106923039 # 下载…...

QT初学者该安装qt creator哪个版本?

对于Qt初学者&#xff0c;建议安装最新版本的Qt Creator。Qt Creator是Qt官方提供的集成开发环境&#xff08;IDE&#xff09;&#xff0c;用于开发Qt应用程序。每个Qt版本都会配套提供对应的Qt Creator版本&#xff0c;确保兼容性和稳定性。同时&#xff0c;选择合适的Qt版本也…...

VR智慧校园资中控管理平台综合提升了课堂教学质量

随着越来越多高校在课堂中引进VR虚拟仿真实训系统&#xff0c;为了方便老师对全班同学进行高效率地管理&#xff0c;VR中控平台应运而生。下面为您详细介绍VR中控平台在课堂教学中的应用优势。 VR中控系统安装在教师总控端&#xff0c;融合了课件、视频、3D动画等丰富的教学资源…...

【Go 基础篇】Go语言中的数组:初识与应用

Go语言以其简洁、高效和强大的特性在编程界广受欢迎。数组作为一种基本的数据结构&#xff0c;在各种应用场景中扮演着重要角色。本文将引入Go语言中的数组&#xff0c;介绍其特点、创建、初始化以及基本应用&#xff0c;为你打开数组的大门。 前言 数组是一种固定大小的数据…...

(vue)el-table 怎么把表格列中相同的数据 合并为一行

(vue)el-table 怎么把表格列中相同的数据 合并为一行 效果&#xff1a; 文档解释&#xff1a; 写法&#xff1a; <el-table:data"tableData"size"mini"class"table-class"borderstyle"width:100%"max-height"760":span-…...

精准高效农业作业,植保无人机显身手

中国作为农业大国&#xff0c;拥有约18亿亩的农田&#xff0c;每年都需要进行种子喷洒和农药施用等农业作业&#xff0c;对于普通农户来说&#xff0c;这是一项耗时耗力的工程&#xff0c;同时&#xff0c;人工喷洒农药极易造成农药慢性中毒&#xff0c;对农民的身体健康产生极…...

大集合拆分成多个小集合

文章目录 1. 场景2. 拆分集合方法&#xff08;写了三种&#xff09;3. 格式化打印方法 1. 场景 在数据库批量操作时&#xff0c;有可能数据量过大&#xff0c;不能一次性操作&#xff0c;所以需要将大集合拆分为多个小集合进行多次操作 2. 拆分集合方法&#xff08;写了三种&…...

linux————LVS集群

目录 一、集群概述 一、负载均衡技术类型 二、负载均衡实现方式 二、LVS结构 一、三层结构 二、架构对象 三、LVS工作模式 四、负载均衡算法 一、静态负载均衡 二、动态负载 五、ipvsadm命令详解 六、LVS配置 一、基础配置 二、实现NAT模型搭建 配置IP地址 安装…...

软考高级系统架构设计师系列论文七十一:论行业应用软件系统的开发规划

软考高级系统架构设计师系列论文七十一:论行业应用软件系统的开发规划 一、软件系统相关知识二、摘要三、正文四、总结一、软件系统相关知识 软考高级系统架构设计师系列之:系统开发基础知识...

vue2 自定义指令,插槽

一、学习目标 1.自定义指令 基本语法&#xff08;全局、局部注册&#xff09;指令的值v-loading的指令封装 2.插槽 默认插槽具名插槽作用域插槽 二、自定义指令 1.指令介绍 内置指令&#xff1a;v-html、v-if、v-bind、v-on… 这都是Vue给咱们内置的一些指令&#xff0c;…...

oracle超详细语法和备份工具

oracle基础语法 在 Oracle 开发中&#xff0c;客户端把 SQL 语句发送给服务器&#xff0c;服务器对 SQL 语句进行编译、执行&#xff0c;把执行的结果返回给客户端。常用的SQL语句大致可以分为五类&#xff1a;数据定义语言&#xff08;DDL&#xff09;&#xff0c;包括 CREAT…...

Redis的持久化机制是什么?各自的优缺点?

Redis拥有两种持久化机制&#xff1a;RDB(Redis Database)和AOF(Append-Only File)。 1.RDB(Redis Database)持久化机制 RDB是Redis的默认持久化方式&#xff0c;它通过将Redis在某个时间点的数据状态保存到磁盘上的二进制文件中。该文件是一个快照(snapshot)&#xff0c;包含…...

机器学习:什么是分类/回归/聚类/降维/决策

目录 学习模式分为三大类&#xff1a;监督&#xff0c;无监督&#xff0c;强化学习 监督学习基本问题 分类问题 回归问题 无监督学习基本问题 聚类问题 降维问题 强化学习基本问题 决策问题 如何选择合适的算法 我们将涵盖目前「五大」最常见机器学习任务&#xff1a…...

算法通关村第5关【白银】| 哈希和栈经典算法题

1.两个栈实现队列 思路&#xff1a;两个栈&#xff0c;一个输入栈&#xff0c;一个输出栈。 当需要输入的时候就往inStack中插入&#xff0c;需要输出就往outStack中输出&#xff0c;当输出栈是空就倒出输入栈的数据到输出栈中&#xff0c;这样就保证了后插入的数据从栈顶倒入…...

CrystalNet .Net VCL for Delphi Crack

CrystalNet .Net VCL for Delphi Crack VCL或更为人所知的可视化组件库是基于一个面向对象的框架&#xff0c;什么是用户对开发人员和事件的Microsoft Windows应用程序的接口。可视化组件库是用对象Pascal编写的。它主要是为使用Borland而开发的&#xff0c;它具有与Delphi以及…...

云计算在线实训系统建设方案

一、 人工智能与云计算系统概述 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是一种模拟人类智能的科学和工程&#xff0c;通过使用计算机系统来模拟、扩展和增强人类的智能能力。人工智能涉及多个领域&#xff0c;包括机器学习、深度学习、自然…...

C++ 珠心算测验

珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练&#xff0c; 既能够开发智力&#xff0c;又能够为日常生活带来很多便利&#xff0c;因而在很多学校得到普及。 某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整…...

像素幻梦·创意工坊实操手册:实时HUD状态栏信息读取与调试技巧

像素幻梦创意工坊实操手册&#xff1a;实时HUD状态栏信息读取与调试技巧 1. 认识像素幻梦的HUD状态栏 像素幻梦创意工坊的HUD&#xff08;Head-Up Display&#xff09;状态栏位于界面顶部&#xff0c;采用16-bit像素风格设计&#xff0c;为创作者提供实时系统状态反馈。这个看…...

Git GUI里那些小箭头和蓝点到底是啥?一份给新手的保姆级图解指南

Git GUI可视化指南&#xff1a;解码提交历史中的符号与分支拓扑 第一次打开Git GUI的提交历史视图时&#xff0c;那些彩色线条、小蓝点和神秘箭头就像天书般令人困惑。作为从SVN过渡到Git的开发者&#xff0c;我曾盯着这些符号发呆半小时——直到发现它们其实是项目历史的可视化…...

Stable-Diffusion-v1-5-archive镜像免配置部署:7860端口直连实操手册

Stable-Diffusion-v1-5-archive镜像免配置部署&#xff1a;7860端口直连实操手册 想体验经典AI绘画的魅力&#xff0c;又不想折腾复杂的本地环境&#xff1f;今天&#xff0c;我们就来手把手教你如何通过一个预置好的镜像&#xff0c;零配置、一键式地启动Stable Diffusion v1…...

终极Mailtrain故障排除指南:10个常见问题与快速解决方案

终极Mailtrain故障排除指南&#xff1a;10个常见问题与快速解决方案 【免费下载链接】mailtrain Self hosted newsletter app 项目地址: https://gitcode.com/gh_mirrors/ma/mailtrain Mailtrain作为一款自托管的 newsletter 应用&#xff0c;为用户提供了强大的邮件营销…...

Blender 5.0 插件生态实战指南:从建模到渲染的流程效率革命

1. Blender 5.0插件生态的核心价值 如果你用过Blender&#xff0c;一定遇到过这样的场景&#xff1a;建模时反复手动倒角、UV展开时对着乱七八糟的贴图发呆、渲染时发现场景灯光怎么调都不自然。这些问题在Blender 5.0的插件生态中都能找到优雅的解决方案。 我做了10年三维设计…...

出国旅行手机没信号?Nrfr免Root工具一键解锁全球网络

出国旅行手机没信号&#xff1f;Nrfr免Root工具一键解锁全球网络 【免费下载链接】Nrfr &#x1f30d; 免 Root 的 SIM 卡国家码修改工具 | 解决国际漫游时的兼容性问题&#xff0c;帮助使用海外 SIM 卡获得更好的本地化体验&#xff0c;解锁运营商限制&#xff0c;突破区域限制…...

C# WebSocket实战:5分钟搞定实时聊天应用(附完整源码)

C# WebSocket实战&#xff1a;5分钟构建高可靠实时聊天系统 实时通信已成为现代应用的核心需求之一。想象一下&#xff0c;当用户发送消息时&#xff0c;对方能立即看到&#xff1b;当股票价格波动时&#xff0c;交易界面实时更新&#xff1b;当多人协作编辑文档时&#xff0c;…...

BGE Reranker-v2-m3开发者案例:为LangChain添加本地重排序节点的5步集成法

BGE Reranker-v2-m3开发者案例&#xff1a;为LangChain添加本地重排序节点的5步集成法 1. 项目背景与核心价值 在构建检索增强生成&#xff08;RAG&#xff09;系统时&#xff0c;文本相关性排序是决定最终效果的关键环节。传统的基于向量相似度的检索往往无法准确捕捉查询与…...

快速上手腾讯混元OCR:部署过程常见错误及解决方法合集

快速上手腾讯混元OCR&#xff1a;部署过程常见错误及解决方法合集 1. 认识腾讯混元OCR 腾讯混元OCR&#xff08;HunyuanOCR&#xff09;是一款基于腾讯混元原生多模态架构的端到端OCR专家模型。作为一款轻量级但功能强大的文字识别工具&#xff0c;它仅用1B参数就实现了多项业…...

3步搞定浏览器功能扩展:Greasy Fork开源脚本管理平台完全指南

3步搞定浏览器功能扩展&#xff1a;Greasy Fork开源脚本管理平台完全指南 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork Greasy Fork作为开源的用户脚本管理平台&#xff0c;为技术爱好者…...