6.11 作业

以下是一个简单的比喻,将多态概念与生活中的实际情况相联系:

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

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

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

具体过程如下:

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

cpp 复制代码
#include <iostream>

using namespace std;
//封装一个基类 Animal包含一个虚函数perform
class Animal
{
public: //共有的
    virtual void perform() const = 0;//纯虚函数

};

//封装 狮子 类 共有继承 Animal 类
class Lion:public Animal
{
public:
    void perform() const override
    {
        cout << "狮子在吼叫" << endl;
    }
};
//封装一个 猴子 类 共有继承Animal 类
class Monkey:public Animal
{
    void perform() const override
    {
        cout << "猴子在爬树" << endl;
    }
};
//封装一个 大象 类 共有继承Animal 类
class Elephant:public Animal
{
    void perform() const override
    {
        cout << "大象在用鼻子喷水" << endl;
    }
};
//封装一个讲解员类
class ZooKeeper
{
public:
    void introduce(const Animal& animal)
    {
        cout << "这只动物正在表演" << endl;
        animal.perform(); //多态调用
    }
};

int main()
{
    ZooKeeper keeper;
    Lion lion;
    Elephant elephant;
    Monkey monkey;
    keeper.introduce(lion);
    keeper.introduce(elephant);
    keeper.introduce(monkey);
    return 0;
}
相关推荐
草莓熊Lotso33 分钟前
《吃透 C++ 类和对象(中):构造函数与析构函数的核心逻辑》
c++·经验分享·笔记·程序人生·其他
十五年专注C++开发1 小时前
通信中间件 Fast DDS(一) :编译、安装和测试
linux·c++·windows·中间件·cmake·vcpkg
蒋星熠2 小时前
MySQL 到 ClickHouse 明细分析链路改造:数据校验、补偿与延迟治理
android·大数据·开发语言·c++·python·mysql·系统架构
七七七七072 小时前
【C++ STL】list详解和模拟
开发语言·c++·list
屁股割了还要学6 小时前
【数据结构入门】堆
c语言·开发语言·数据结构·c++·考研·算法·链表
草莓熊Lotso9 小时前
【洛谷题单】--分支结构(三)
c语言·c++·刷题·洛谷
GetcharZp10 小时前
C++日志库新纪元:为什么说spdlog是现代C++开发者必备神器?
c++·后端
Algebraaaaa10 小时前
为什么C++主函数 main 要写成 int 返回值 | main(int argc, char* argv[]) 这种写法是什么意思?
开发语言·c++
fqbqrr14 小时前
2508C++,检测S模式
c++
专注VB编程开发20年16 小时前
IIS Express中可以同时加载并使用.net4.0和.NET 2.0的 DLL
c++·windows·microsoft·c#·vb.net