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;
}

运行效果图:

 思维导图:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

三相不平衡电压的正负序分析

1、什么是正负序&#xff1f; ABC 正序 ACB 负序 2、在abc坐标系下 接着利用矢量的旋转消去其它分量。。。 同理&#xff0c;得到其它的所有正负序的分量abc 3、在α/β坐标系下&#xff0c; 依次算出正负序的α/β来表示的abc 有一点需要特别注意&#xff0c;可以看到…

Java类对象的操作

1.Student.java package Message; public class Student {private String stuName; // 姓名private int money; // 存款余额private String studentID; // 学号private int age; // 年龄private String address; // 地址private String phoneNumber; // 电话号码private String…

同名称的文件如何批量指定到同名称文件夹中保存

在日常工作中相信大家都是会遇到文件或文件名修改名称、或文件批量归类保存等等&#xff0c;相对来文件或文件夹批量重命名会比较好操作&#xff0c;如果遇到按文件名称批量到指定同名称文件夹中保存呢&#xff1f;这可要什么来实现呢&#xff0c;到底能不能实现出来。接下来大…

Go1.21.0 程序启动过程

版本说明 Go 1.21.0操作系统&#xff1a;Windows11 Intel64 结论先行 开发关注版 在 Go 语言中&#xff0c;启动顺序通常如下&#xff1a; 导入包&#xff1a;首先&#xff0c;Go 编译器按照源文件中的 import 语句导入所有需要的包。初始化常量和变量&#xff1a;接着&am…

SpringBoot自定义参数校验注解

为什么要自定义校验注解? 当现有的注解NotEmptyPatternNotNullURl等不能满足业务需求的时候,我们需要手动自定义一个注解 操作步骤 新建一个anno的包 单击右键添加注解 编写state注解 创建validation文件夹 编写校验规则 然后给上面的State注解指定这个校验规则 使用注解…

程序的机器即代码表示

高级语言与机器级代码之间的对应 x86汇编语言指令基础 mov指令 mov目的操作数d,源操作数s destination:目的地 source:来源、发源地 #mov指令功能: 将源操作数s复制到目的操作数d所指的位置 mov eax, ebx #将寄存器ebx的值复制到寄存器eax mov eax, 5 #将立即数5复制到寄存器…

【LeetCode刷题-二叉树】--110.平衡二叉树

110.平衡二叉树 方法一&#xff1a;自顶向下递归 对于当前遍历到的节点&#xff0c;首先计算左右子树的高度&#xff0c;如果左右子树的高度差是否不超过 111&#xff0c;再分别递归地遍历左右子节点&#xff0c;并判断左子树和右子树是否平衡。这是一个自顶向下的递归的过程。…

GoWeb开发框架gin-基础路由使用

文章目录 1.安装并写一个demo2.配置GoLang热加载脚手架3.配合net/http使用完整示例4.返回值4.1String返回值4.2Json返回值4.3struct结构体返回值4.4jsonp返回值4.5XML返回值 5.接收前端传过来的参数5.1get请求传值5.2form表单传值5.3接收结构体5.4路由地址传参 6.完整代码 1.安…

00.仿简道云公式实战-学前须知

简道云介绍&#xff1a;简道云作为一款个性化应用搭建工具&#xff0c;支持用户在线无编程、免费搭建管理应用&#xff0c;如进销存系统&#xff0c;OA系统等常见应用&#xff0c;公式可以帮助用户提高填写表单的效率&#xff0c;将一些数据自动计算出来。了解简道云公式的小伙…

flstudio21.3.2304高级版水果编曲音乐软件

flstudio高级版是一款适用于广泛领域的音频编辑软件。它支持多通道混音器和VST插件&#xff0c;包括数百种乐器和效果插件。它还为您提供了一个乐谱编辑器&#xff0c;需要对不同乐器的节奏进行必要的编辑。Flstudio具有许多内置电子合成声音&#xff0c;可提供更广泛的电子声音…

代码随想录二刷 |二叉树 | 二叉树的右视图

代码随想录二刷 &#xff5c;二叉树 &#xff5c; 二叉树的右视图 题目描述解题思路代码实现 题目描述 199.二叉树的右视图 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例…

推荐4个优秀的 Python 时间序列分析库

时间序列分析在金融和医疗保健等领域至关重要&#xff0c;在这些领域&#xff0c;理解随时间变化的数据模式至关重要。在本文中&#xff0c;我们将介绍四个主要的Python库——statmodels、tslearn、tssearch和tsfresh——每个库都针对时间序列分析的不同方面进行了定制。这些库…

【unity实战】一个通用的FPS枪支不同武器射击控制脚本

文章目录 前言模型素材文章用到的粒子火光特效射击效果换弹瞄准开枪抖动效果设置显示文本最终代码不同武器射击效果1. 手枪2. 机枪3. 狙击枪4. 霰弹枪5. 加特林 其他感谢完结 前言 实现FPS枪支不同武器效果&#xff0c;比如手枪&#xff0c;喷子&#xff0c;狙击枪&#xff0c…

Redis生产实战-Redis集群故障探测以及降级方案设计

Redis 集群故障探测 在生产环境中&#xff0c;如果 Redis 集群崩溃了&#xff0c;那么会导致大量的请求打到数据库中&#xff0c;会导致整个系统都崩溃&#xff0c;所以系统需要可以识别缓存故障&#xff0c;限流保护数据库&#xff0c;并且启动接口的降级机制 降级方案设计 …

贪心算法及相关题目

贪心算法概念 贪心算法是指&#xff0c;在对问题求解时&#xff0c;总是做出在当前看来是最好的选择。也就是说&#xff0c;不从整体最优上加以考虑&#xff0c;算法得到的是在某种意义上的局部最优解 。 贪心算法性质&#xff08;判断是否可以使用贪心算法&#xff09; 1、贪…

【力扣周赛】第 372 场周赛( ⭐查询 离线做法)TODO

文章目录 竞赛链接Q1&#xff1a;2937. 使三个字符串相等竞赛时代码——检查三个字符串的最长公共前缀子串 Q2&#xff1a;2938. 区分黑球与白球竞赛时代码 Q3&#xff1a;2939. 最大异或乘积竞赛时代码——位运算解法2—— O ( 1 ) O(1) O(1)做法&#x1f44d;&#xff08;大量…

php中json_encode编码json中出现HTML代码导致无法正常输出的解决办法

$options JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT; $data array(key > <p>test</p>);echo json_encode($data, $options);JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, 和 JSON_HEX_QUOT 是 PHP 中 json_encode() 函数的常量选项&#…

Pytorch-CNN轴承故障一维信号分类(二)

目录 前言 1 数据集制作与加载 1.1 导入数据 1.2 数据加载&#xff0c;训练数据、测试数据分组&#xff0c;数据分batch 2 CNN-2D分类模型和训练、评估 2.1 定义CNN-2d分类模型 2.2 定义模型参数 2.3 模型结构 2.4 模型训练 2.5 模型评估 3 CNN-1D分类模型和训练、评…

【密码学基础】Diffie-Hellman密钥交换协议

DH介绍 Diffie-Hellman密钥协议算法是一种确保共享密钥安全穿越不安全网络的方法。 这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥&#xff0c;然后可以用这个密钥进行加密和解密。 但是注意&#xff0c;这个密钥交换协议 只能用于密钥的交换&#xff0c;而…