C++12.5

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

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

具体过程如下:

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

代码:

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

运行效果图:

 思维导图:

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

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

相关文章

HQX Customization Guide

QNX Hypervisor Customization Guide 80-PM231-1 qnx FDE配置 target/hypervisor/host/qcpe_config/8540/QCPE_config_8540_la.xml <fde_config><!-- Total Slots for Makena are 64, of which 10 are reserved --><!-- QNX_HOST --><vm id="HOST…

conda的使用教程总结

conda是一个包管理器和环境管理器&#xff0c;可以用于安装多个版本的Python及其相关的软件包&#xff0c;并且可以创建和管理不同的环境。下面是conda安装教程&#xff1a; 1 安装Anaconda&#xff1a; 首先需要下载并安装Anaconda&#xff0c;可以从官方网站(https://www.a…

【数据结构】链表OJ题(顺序表)(C语言实现)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

握这些员工管理技巧,助你打造高效团队!

人力资源是一个组织中至关重要的一环&#xff0c;而员工管理是确保团队高效运转的关键因素之一。一个优秀的经理需要具备多方面的技巧和能力&#xff0c;以便激发员工的潜力&#xff0c;促进合作和增加团队的效率。在这里&#xff0c;我将分享一些实用的员工管理技巧&#xff0…

Day41| Leetcode 343. 整数拆分 Leetcode 96. 不同的二叉搜索树

Leetcode 343. 整数拆分 题目链接 343 整数拆分 dp[i]的含义对i进行拆分&#xff0c;得到最大的整数 固定一个j用for循环来遍历&#xff0c;剩下的按照i-j来算&#xff0c;拆分成两个数是j*(i-j)&#xff0c;拆分为三个及其以上需要j*dp[i-j],下面上代码&#xff1a; class…

Hadoop学习笔记(HDP)-Part.12 安装HDFS

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

基本类型优先于包装类型

基本类型和包装类型之间有三个主要区别&#xff1a; 1、基本类型只有值&#xff0c;而两个包装类型可以具有相同的值和不同的同一性&#xff08;值相同&#xff0c;但是false&#xff09; 2、基本类型只有功能完备的值&#xff0c;而每个包装类型除了它对应基本类型的所有功能…

RAR文件的密码保护如何设置和取消?

RAR文件是压缩包一种常用的压缩文件格式&#xff0c;对于这种文件&#xff0c;我们如何设置和取消密码保护呢&#xff1f; 首先我们要下载适用于RAR文件的WinRAR解压缩软件&#xff0c;然后在压缩文件的时候&#xff0c;就可以同步设置密码&#xff0c;选中需要压缩的文件&…

在外包公司干测试半年,提升的只有我的年龄···

有一说一&#xff0c;外包没有给很高的薪资&#xff0c;是真不能干呀&#xff01; 先说一下自己的情况&#xff0c;本科生&#xff0c;年初通过校招进入深圳某软件公司&#xff0c;干了接近半年的功能测试&#xff0c;直到最近遇到了瓶颈&#xff0c;感觉自己不能够在这样下去了…

qnx hypervisor load qvm

//解析dts 获取node qcom_gvms 参考博客:https://blog.csdn.net/liaochaoyun/article/details/127427719 startup-qvmhost.sh startup.sh1419 waitfor /dev/lcm_demo/display0 1420 if [ $RECOVERY_MODE -eq 0 ]; then 1421 log_launch $VMM_SERVICE_BINARY #启动 vmm_ser…

Linux C++ 贪吃蛇游戏 -- 方向键控制蛇移动

1. 代码 #include <iostream> #include <ncurses.h> #include <vector> #include <cstdlib> #include <ctime> #include <thread>using namespace std;// 定义方向 enum class Direction { UP, DOWN, LEFT, RIGHT };class SnakeGame { pu…

分享5款小伙伴们推荐的好用软件

​ 转眼间2023年已经只剩下一个月了&#xff0c;最近陆陆续续收到好多小伙伴的咨询&#xff0c;这边也是抓紧整理出几个好用的软件&#xff0c;希望可以帮到大家。 1.文件格式转换——Convertio ​ Convertio是一款在线文件格式转换软件&#xff0c;可以让用户在不同的文件格…

【开题报告】基于SSM的校园爱心帮扶系统的设计与实现

1.选题背景 校园爱心帮扶系统是基于SSM&#xff08;SpringSpringMVCMyBatis&#xff09;框架的设计与实现&#xff0c;旨在促进校园内的爱心互助和帮扶活动。以下是一些可能的选题背景&#xff1a; &#xff08;1&#xff09;社会责任感的提升&#xff1a;随着社会发展&#…

Python sorted函数及用法以及如何用json模块存储数据

Python sorted函数及用法 sorted() 函数与 reversed() 函数类似&#xff0c;该函数接收一个可迭代对象作为参数&#xff0c;返回一个对元素排序的列表。 在交互式解释器中测试该函数&#xff0c;可以看到如下运行过程&#xff1a; >>> a [20, 30, -1.2, 3.5, 90, 3.…

MongoInvalidArgumentError: Argument “docs“ must be an array of documents

这个错误通常表示在 MongoDB 操作中&#xff0c;你提供的参数不符合预期。错误信息指出了 docs 参数必须是一个文档&#xff08;document&#xff09;数组&#xff0c;但实际上提供的参数类型可能与预期不符。 假设你在使用 MongoDB 的一个函数或方法时出现了这个错误。以下是…

Linux系统---图书管理中的同步问题

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、问题描述 &#xff08;1&#xff09;图书馆阅览室最多能够容纳N&#xff08;N5&#xff09;名学生&#xff0c;若有更多学生想…

FFmpeg的C++封装:FFmpegWrapper

什么是FFmpeg&#xff1f; FFmpeg 是一套完整的录制、转换、流化音视频的解决方案&#xff0c;也是一个在LGPL协议 下的开源项目。它包含了业界领先的音视频编解码库。FFmpeg是在Linux操作系统下开发的&#xff0c;但它也能在其他操作系统下编译&#xff0c;包括Windows。 整…

java常用字符串工具方法封装

Java常用的字符串工具方法有很多&#xff0c;以下是一些常见的封装&#xff1a; 判断字符串是否为空或null public static boolean isNullOrEmpty(String str) {return str null || str.trim().isEmpty(); }判断字符串是否为数字 public static boolean isNumeric(String s…

跨境代采怎么实现(代采网站)

中国代购作为一种新型的业务形式&#xff0c;此类服务能够帮助消费者购买来自全球的商品&#xff0c;同时也为商家提供了在线销售机会。代购行业的兴起&#xff0c;有助于打破传统的地域和跨境限制&#xff0c;促进了国际贸易和经济发展。 一、中国代购的定义和特点 代购可以被…

冬季吃得过饱?羊大师教你几招消食的小妙招!

冬季吃得过饱&#xff1f;羊大师教你几招消食的小妙招&#xff01; 冬季是人们容易吃得过饱的季节&#xff0c;美食诱惑频出&#xff0c;很容易导致胃口过大&#xff0c;饭量过多&#xff0c;造成消化不良甚至影响身体健康。所以&#xff0c;如何消食&#xff0c;让胃得到缓解…