2024-3-18-C++day6作业

1>思维导图

b58af2c8998243e1a9ada8f493561479.png

903795917c134cdbb12e1dd4759da70f.png

2>试编程

要求:

封装一个动物的基类,类中有私有成员:姓名,颜色,指针成员年纪

再封装一个狗这样类,共有继承于动物类,自己拓展的私有成员有:指针成员:腿的个数(整型 int count),共有成员函数:会叫:void speak()

要求:分别完成基类和派生类中的:构造函数、析构函数、拷贝构造函数、拷贝赋值函数

eg : Dog d1;

Dog d2(.....);

Dog d3(d2);

d1 = d3;

源代码:

#include <iostream>

using namespace std;
//封装一个动物的基类
class Animal
{
//类中有私有成员:姓名,颜色,指针成员年纪
private:
    string name;
    string color;
    double *age;

public:
    //Animal无参拷贝
    Animal(){}
    //Animal有参拷贝
    Animal(string n,string c,double a):name(n), color(c),\
        age(new double(a))
    {}
    //Animal析构函数
    ~Animal()
    {
        delete age;
    }
    //Animal拷贝构造
    Animal (const Animal &other):name(other.name),\
        color(other.color), age(new double(*other.age))
    {}
     //Animal拷贝赋值
    Animal &operator=(const Animal &other)
    {
        if(this != &other)
        {
             name = other.name;
             color = other.color;
             age = new double(*other.age);
        }
        return *this;
    }
};
//封装一个狗这样类,公有继承于动物类
class Dog:public Animal
{
//自己拓展的私有成员有:指针成员:腿的个数(整型 int legNum)
private:
    int *legNum;

public:
    //Dog无参拷贝
    Dog(){}
    //Dog有参拷贝
    Dog(int ln,string n,string c,double a):Animal(n,c,a),\
        legNum(new int(ln))
    {}
    //Dog析构函数
    ~Dog()
    {
        delete legNum;
    }
    //Dog拷贝构造
    Dog (const Dog &other):Animal(other),\
        legNum(new int(*other.legNum))
    {}
    //Dog拷贝赋值
    Dog &operator=(const Dog &other)
    {
        if(this != &other)
        {
            legNum = new int(*other.legNum);
            Animal::operator=(other);
        }
        return *this;
    }
    //公有成员函数:会叫:void speak()
    void speak()
    {
        cout << this << ": 汪汪汪……" << endl;
    }
};

int main()
{
    Dog d1;
    Dog d2(4,"小汪","blue",2.5);
    Dog d3(d2);
    d1 = d3;
//    d1.speak();
//    d2.speak();
//    d3.speak();

    return 0;
}

3>试编程

要求:

以下是一个简单的比喻,将多态概念与生活中的实际情况相联系:
比喻:动物园的讲解员和动物表演想象一下你去了一家动物园,看到了许多不同种类的动物,如狮子、大象、猴子等。现在,动物园里有一位讲解员,他会为每种动物表演做简单的介绍。
在这个场景中,我们可以将动物比作是不同的类,而每种动物表演则是类中的函数。
而讲解员则是一个基类,他可以根据每种动物的特点和表演,进行相应的介绍。
具体过程如下:
定义一个基类 Animal,其中有一个虛函数perform(),用于在子类中实现不同的表演行为。

源代码:

#include <iostream>

using namespace std;

//定义一个基类Animal
class Animal
{
public:
    virtual void perform() = 0;
};

//定义一个Animal的子类Lion派生类
class Lion:virtual public Animal
{
private:
    string introduction;

public:
    Lion(string introduction=""):introduction(introduction){}
    //重写 perform()虚函数
    void perform() override
    {
        cout << "  介绍:芝士狮子" << introduction <<endl;
        cout << "  表演:狮子拜天!" << endl;
    }

};
//定义一个Animal的子类SnowLeopard派生类
class SnowLeopard:virtual public Animal
{
private:
    string introduction;
public:
    SnowLeopard(string introduction=""):introduction(introduction){}
    //重写 perform()虚函数
    void perform() override
    {
        cout << "  介绍:芝士雪豹" << introduction <<endl;
        cout << "  表演:与丁真珍珠去粘合国演讲。" << endl;
    }
};
//定义一个Animal的子类Elephant派生类
class Elephant:virtual public Animal
{
private:
    string introduction;

public:
    Elephant(string introduction=""):introduction(introduction){}
    //重写 perform()虚函数
    void perform() override
    {
        cout << "  介绍:芝士大象" << introduction <<endl;
        cout << "  表演:大象踢腿!" << endl;
    }
};


int main()
{
    // 实例化不同的动物类
    Lion lion;
    Elephant elephant;
    SnowLeopard SnowLeopard;

    // 使用基类指针指向不同的动物对象,实现多态
    Animal* animal1 = &lion;
    Animal* animal2 = &elephant;
    Animal* animal3 = &SnowLeopard;

    // 讲解员为每种动物表演做介绍
    cout << "动物园讲解员开始介绍:" << endl;
    cout << "------------------------" << endl;
    cout << "狮子表演:" << endl;
    animal1->perform();
    cout << "------------------------" << endl;
    cout << "雪豹表演:" << endl;
    animal3->perform();
    cout << "------------------------" << endl;
    cout << "大象表演:" << endl;
    animal2->perform();
    cout << "------------------------" << endl;

    return 0;
}

效果图:

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

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

相关文章

蓝桥杯-24点-搜索

题目 思路 --暴力递归全组合的方法。只有4个数&#xff0c;4种计算方式&#xff0c;共有4 * 3 * 2 * 1 * 4种不同的情况&#xff0c;可以写递归来实现。 --每次计算都是两个数之间的运算&#xff0c;因此4个数需要3次计算&#xff0c;第一次计算前有4个数&#xff0c;第二次有…

Mysql与MyBatis

1 Sql语句 增删改查 1.1 建表 -- cmd展示数据库 show databases ; -- cmd登录数据库 mysql localhost -u root -p-- auto_increment 自动增长&#xff0c;每添加一个表项id自动增1 -- char定长字符串 0-255&#xff0c;不足十个字符按十个字符算&#xff0c; varchar变长字符串…

阿里云服务器“地域”,这么选择就对了!

阿里云服务器地域选择方法&#xff0c;如何选择速度更快、网络延迟更低的地域节点&#xff0c;地域指云服务器所在的地理位置区域&#xff0c;地域以城市划分&#xff0c;如北京、杭州、深圳及上海等&#xff0c;如何选择地域&#xff1f;建议根据用户所在地区就近选择地域&…

预防近视的台灯有哪些?多款专家说好的护眼台灯推荐

现在的儿童青少年近视率真的非常高&#xff01;据统计&#xff0c;我国儿童青少年的总体近视率为52.7%&#xff0c;其中6岁儿童为14.3%&#xff0c;小学生为35.6%&#xff0c;初中生为71.1%&#xff0c;高中生为80.5%。而造成如此高近视率的原因主要还是长时间过度用眼导致的疲…

【Qt问题】使用QSlider创建滑块小部件无法显示

问题描述&#xff1a; 使用QSlider创建滑块小部件用于音量按钮的时候&#xff0c;无法显示&#xff0c;很奇怪&#xff0c;怎么都不显示 一直是这个效果&#xff0c;运行都没问题&#xff0c;但是就是不出现。 一直解决不了&#xff0c;最后我在无意中&#xff0c;在主程序中…

LabVIEW飞行器螺旋桨性能测试与数据监控

LabVIEW飞行器螺旋桨性能测试与数据监控 开发LabVIEW的电动飞行器螺旋桨性能测试与数据监控系统&#xff0c;专门针对电动飞行器螺旋桨在运行过程中的性能测试和监控需求。通过采集转速、转矩、拉力和温度等关键参数&#xff0c;系统能够实时监测和分析螺旋桨的状态&#xff0…

AI - 集成学习

目录 集成学习概念 集成学习器性能评估 随机森林 AdaBoost &#x1f606;&#x1f606;&#x1f606;感谢大家的阅读&#x1f606;&#x1f606;&#x1f606; 集成学习概念 &#x1f48e;集成学习是机器学习中的一种思想&#xff0c;它通过多个模型的组合形成一个精度…

【Spring MVC】Spring MVC拦截器(Interceptor)

目录 一、拦截器介绍 二、拦截器 Interceptor 定义 2.1 HandlerInterceptor接口 2.2 Spring MVC中提供的一些HandlerInterceptor接口实现类 1、AsyncHandlerInterceptor 2、WebRequestInterceptor 3、MappedInterceptor 4、ConversionServiceExposingInterceptor 三、拦…

力扣题单(小白友好)

力扣题单 算法小白自用题单,目前对于一些简单的数据结构感觉掌握的还可以,但是力扣很多题还是需要看题解,不够熟练;故整理了一份题单,用于巩固练习; 网上确实有很多对于算法分类讲解的网站,but:有一丢丢选择困难症,每天不知道该刷什么题,再加上网站对于一类题一般就有十几道题目…

人工智能技术的不当利用与风险

目录 前言1 视频篡改技术的滥用1.1 虚假信息传播与社会动荡1.2 对公众信任的破坏与舆论混乱 2 隐私泄露与监视风险2.1 个人信息安全与数据滥用风险2.2 社会稳定与个人自由权利的平衡 3 虚假评论与信息传播3.1 舆论操纵与社会意识形态的影响3.2 对信息可信度与公众信任的威胁 结…

雷龙发展Nand flash芯片试用体验

一、项目背景 最近自己开始准备了一个智能家居控制系统项目,需要包含室内的温湿度、空气质量、烟雾浓度以及气体含量,能够存储相应的数据,并进行显示。 Nand-flash存储器是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案…

阿里云ecs服务器配置反向代理上传图片

本文所有软件地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/12OSFilS-HNsHeXTOM47iaA 提取码&#xff1a;dqph 为什么要使用阿里云服务器&#xff1f; 项目想让别人通过外网进行访问就需要部署到我们的服务器当中 1.国内知名的服务器介绍 国内比较知名的一些…

一招让你的Mac重获新生!CleanMyMac专业软件助你清理系统垃圾,保障安全!

一、Mac用户必备神器——CleanMyMac 随着Mac的使用时间越来越长&#xff0c;系统中的垃圾文件也会越来越多&#xff0c;不仅占用宝贵的硬盘空间&#xff0c;还会影响系统的运行速度。这时候&#xff0c;一款专业的清理软件就显得尤为重要。CleanMyMac作为荣获多项大奖的清理软件…

录视频的软件推荐,助力视频内容创作

随着网络技术的发展和在线教育的兴起&#xff0c;录制视频教程的需求日益增加。无论是制作教学课程、分享办公技巧&#xff0c;还是录制游戏过程&#xff0c;一款好用的录屏软件都至关重要。本文将深入介绍三款录视频的软件&#xff0c;帮助读者了解它们的特点和操作步骤&#…

【Linux】回顾 C 文件接口

文章目录 1. 写文件2. 读文件3. 输出信息到显示器的几个方法4. stdin / stdout / stderr5. 打开文件的方式 1. 写文件 int main() {FILE* fp fopen("myfile", "w");if (!fp){printf("fopen error!\n");}const char* msg "hello world!\n…

自己录的视频怎么配上字幕?推荐几种方法

自己录的视频怎么配上字幕&#xff1f;在数字化时代&#xff0c;视频已经成为人们获取信息、娱乐消遣的重要形式。而对于许多内容创作者来说&#xff0c;为自己的视频添加字幕不仅能提升观众的观看体验&#xff0c;还能增加视频的专业度和吸引力。那么&#xff0c;如何为自己的…

初次文件包含漏洞

1.文件包含漏洞介绍 1.1.文件包含漏洞解释   文件包含漏洞就是使用函数去包含任意文件的时候&#xff0c;当包含的文件来源过滤不严谨的时候&#xff0c;当存在包含恶意文件后&#xff0c;就可以通过这个恶意的文件来达到相应的目的。 1.2.文件包含漏洞原理    其实原理就…

数据之谜:解读Facebook的用户行为

在当今数字化时代&#xff0c;社交媒体平台已经成为人们生活中不可或缺的一部分&#xff0c;而Facebook作为全球最大的社交网络之一&#xff0c;其背后隐藏着许多数据之谜。本文将深入探讨Facebook的用户行为&#xff0c;并试图解读其中的奥秘。 用户行为数据的收集 Facebook作…

【Python】进阶学习:一文解决如何从指定的源目录中,挑选出符合条件的文件,并将这些文件复制到目标目录中

【Python】进阶学习&#xff1a;一文解决如何从指定的源目录中&#xff0c;挑选出符合条件的文件&#xff0c;并将这些文件复制到目标目录中 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化…

spotify怎么购买会员?

Spotify&#xff0c;是一家瑞典在线音乐流媒体平台&#xff0c;主要服务除音乐外&#xff0c;包含播客、有声书及影片流服务。 Spotify于2006年4月&#xff0c;由Daniel Ek和Martin Lorentzon在瑞典创立&#xff0c;以数字版权管理保护的音乐为主要业务&#xff0c;用户规模截至…