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

news2024/11/15 12:07:13

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

效果图:

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

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

相关文章

面试算法-52-对称二叉树

题目 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 解 class Solution {public boolean isSymmetric(TreeNode root) {return dfs(root, root);}public boolean dfs(Tr…

长安链正式发布三周年,技术更迭支撑产业变革

导语&#xff1a; 2024年1月27日长安链正式发布三周年&#xff0c;开源社区借开年之际与大家一同回顾长安链三年来的技术发展历程&#xff0c;每一个里程碑的建设都得益于与长安链同行的合作伙伴与开发者&#xff0c;希望在2024年可以共同携手继往开来&#xff0c;为数字经济发…

第三门课:结构化机器学习项目-机器学习策略

文章目录 1 机器学习策略一1.1 为什么是ML策略&#xff1f;1.2 正交化1.3 单一数字评估指标1.4 满足和优化指标1.5 训练、开发及测试集划分1.6 开发集和测试集的大小1.7 什么时候改变开发、测试集和指标&#xff1f;1.8 为什么是人的表现&#xff1f;1.9 可避免偏差1.10 理解人…

STM32第九节(中级篇):RCC(第三节)—— 使用HSE配置系统时钟并使用MCO输出监控系统时钟

前言 这节课我们开始学习使用HSE配置系统时钟并使用MCO输出监控系统时钟&#xff0c;上节课我们讲了固件库里的系统时钟配置函数&#xff0c;是机器写的&#xff0c;我们现在自己来写一个。 STM32第九节&#xff08;中级篇&#xff09;&#xff1a;RCC&#xff08;第三节&…

【人工智能】Gitee AI 天数智芯有奖体验开源AI模型,一定能有所收货,快来体验吧

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章。 这是《人工智能》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 目录 前言两大赛道天数智芯1.模型地址2.天数智芯专区3.选择模型4.模型详情页5.部署模型6.成功部署7.执行例子8.移除模型 千模盲…

被大家低估的Excel函数扫地僧choose函数

今天我们要跟大家介绍Excel函数界的又一个世外高手——引用函数CHOOSE。 首先来看下它的基本语法&#xff1a; CHOOSE(索引值,参数1,[参数2],…[参数254]) CHOOSE函数主要用于根据索引值从一组数据中返回相应位置的数值。索引值是介于1到254之间的数字&#xff0c;或者是包含…

2024全网最全的完整的性能测试流程!

完整的性能测试流程 一、准备工作 在什么阶段开展性能测试工作&#xff1f;一般情况下&#xff0c;是在被测系统已完成功能测试、系统趋于稳定的情况下&#xff0c;才会进行性能测试。 1. 组建测试团队 根据被测系统的实际情况&#xff0c;组建一个性能测试团队&#xff0c;团…

[QJS xmake] 非常简单地在Windows下编译QuickJS!

文章目录 前言准备C编译器xmake编译包 工程准备修改版本号第一遍编译第二遍编译效果 前言 quickjs是个很厉害的东西啊&#xff0c;我一直想编译一下的&#xff0c;奈何一直没成功。现在找了点时间成功编译了&#xff0c;写篇文章记录一下。当前版本&#xff1a;2024-1-13 应该…

STM32CubeIDE基础学习-LED闪烁实验

STM32CubeIDE基础学习-LED闪烁实验 文章目录 STM32CubeIDE基础学习-LED闪烁实验前言第1章 硬件介绍第2章 新建工程2.1 基础工程配置部分2.2 工程外设配置部分2.3 生成工程代码部分2.4 输出HEX文件、编译下载 第3章 代码编写3.1 方式1&#xff1a;IO翻转3.2 方式2&#xff1a;调…

“西安大重澳生物科技有限公司”——甄选优质企业品牌入围央媒

西安大重澳生物科技有限公司&#xff0c;一家专注于生物科技研发的企业&#xff0c;自2017年成立以来&#xff0c;致力于开发革命性的肤用肽制剂产品。近日&#xff0c;成功入围央视新媒体直播盛典。在持续的创新与努力下&#xff0c;畅夫泰R畅肤肽品牌已成为备受瞩目的名副其实…

园区配电监测信息系统

园区配电监测信息系统是一款集成了高科技、数据分析和管理的系统&#xff0c;旨在实时监测和控制园区内的电力供应&#xff0c;提高电力使用效率&#xff0c;减少能源浪费&#xff0c;确保电力安全。该系统通过现代通信技术、自动控制技术和计算机技术&#xff0c;实现对园区配…

码云简化版使用教程

码云简化版使用教程 ①创建本地项目 ②在本地项目根目录下创建git相关目录及文件 ③在码云上创建新的仓库 ④在本地项目中配置仓库地址&#xff0c;提交项目内容 下面直接从第二步开始讲解 在本地项目根目录下创建git相关目录及文件 1、打开项目根目录&#xff0c;进入cmd界…

Huggingface 笔记:大模型(Gemma2B,Gemma 7B)部署+基本使用

1 部署 1.1 申请权限 在huggingface的gemma界面&#xff0c;点击“term”以申请gemma访问权限 https://huggingface.co/google/gemma-7b 然后接受条款 1.2 添加hugging对应的token 如果直接用gemma提供的代码&#xff0c;会出现如下问题&#xff1a; from transformers i…

邮箱验证码api接口申请流程?有哪些条件?

邮箱验证码API服务如何选择&#xff1f;怎么正确设置邮箱验证码&#xff1f; 邮箱验证码API接口在保障用户账号安全、提高用户体验方面发挥着至关重要的作用。AokSend将详细介绍邮箱验证码API接口的申请流程&#xff0c;帮助您顺利集成这一功能&#xff0c;增强应用的安全性。…

【ADF4351】使用FPGA进行SPI寄存器配置、使用FPGA计算各个频率的频点,ADF4351配置程序

简介 特性 输出频率范围&#xff1a;35 MHz至4,400 MHz 小数N分频频率合成器和整数N分频频率合成器 具有低相位噪声的VCO 可编程的1/2/4/8/16/32/64分频输出 典型抖动&#xff1a;0.3 ps rms EVM(典型值&#xff0c;2.1 GHz)&#xff1a; 0.4% 电源&#xff1a;3.0 V至3.6 V …

基于spring boot框架的发艺美发店管理系统

摘 要 系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方法对发艺美发店管理的现状进行系统调查。采用结构化的分析设计&#xff0c;该方法要求结合一定的图表&#xff0c;在模块化的基础上进行系统的开发工作。在设计中采用“自下而…

算法详解——选择排序和冒泡排序

一、选择排序 选择排序算法的执行过程是这样的&#xff1a;首先&#xff0c;算法遍历整个列表以确定最小的元素&#xff0c;接着&#xff0c;这个最小的元素被置换到列表的开头&#xff0c;确保它被放置在其应有的有序位置上。接下来&#xff0c;从列表的第二个元素开始&#x…

Java进阶 Maven基础

资料格式 配置文件 com.itheima Java代码 Statement stat con.createStatement(); 示例 com.itheima 命令 mvn test - Maven简介 传统项目管理状态分析 Maven 是什么 Maven的本质是一个项目管理工具&#xff0c;将项目开发过程抽象成一个项目对象模型&#xff08;POM&…

如何使用phpStudy在Windows系统部署静态站点并实现无公网IP远程访问

文章目录 使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点&#xff0c;测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中&#xff0c;查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2.2 映…

文献速递:深度学习乳腺癌诊断---使用深度学习改善乳腺癌组织学分级

Title 题目 Improved breast cancer histological grading using deep learning 使用深度学习改善乳腺癌组织学分级 01 文献速递介绍 乳腺癌组织学分级是乳腺癌中一个确立的临床变量&#xff0c;它包括来自三个方面的信息&#xff0c;即小管形成程度、核多态性和有丝分裂计…