C++作业day6
编程1:
封装一个动物的基类,类中有私有成员:姓名,颜色,指针成员年纪
再封装一个狗这样类,共有继承于动物类,自己拓展的私有成员有:指针成员:腿的个数(整型 int count),共有成员函数:会叫:void speak()
要求:分别完成基类和派生类中的:构造函数、析构函数、拷贝构造函数、拷贝赋值函数
#include <iostream>using namespace std;//封装 动物 类 -->基类
class Animal
{
private:string name;string colour;int *age;
public:Animal(){}Animal(string name,string colour,int age):name(name),colour(colour),age(new int(age)){cout << "基类::有参构造函数" << endl;}Animal(const Animal &other):name(other.name),colour(other.colour),age(new int(*other.age)){cout << "基类::拷贝构造函数" << endl;}Animal &operator=(const Animal &other){if(this != &other){name = other.name;colour = other.colour;age = new int(*other.age);}cout << "基类::拷贝赋值函数" << endl;return *this;}~Animal(){delete age;age = nullptr;cout << "基类::析构函数" << endl;}
};//封装 狗 类 public 继承 动物 类 --> 派生类
class Dog:public Animal
{
private:int *number; //腿的个数
public:Dog() {}Dog(string name,string colour,int age,int number):Animal(name,colour,age),number(new int(number)){cout << "派生类::有参构造函数" << endl;}Dog(const Dog &other):Animal(other),number(new int(*other.number)){cout << "派生类::拷贝构造函数" << endl;}Dog &operator=(const Dog &other){if(this != &other){Animal::operator=(other);number = new int(*other.number);}cout << "派生类::拷贝赋值函数" << endl;return *this;}void speak(){cout << "汪!汪!汪!" << endl;}~Dog(){delete number;number = nullptr;cout << "派生类::析构函数" << endl;}
};int main()
{Dog d1("旺财","黑色",3,4);d1.speak();Dog d2 = d1;Dog d3;d3 = d1;return 0;
}

编程2:
以下是一个简单的比喻,将多态概念与生活中的实际情况相联系:
比喻:动物园的讲解员和动物表演
想象一下你去了一家动物园,看到了许多不同种类的动物,如狮子、大象、猴子等。现在,动物园里有一位讲解员,他会为每种动物表演做简单的介绍。
在这个场景中,我们可以将动物比作是不同的类,而每种动物表演则是类中的函数。而讲解员则是一个基类,他可以根据每种动物的特点和表演,进行相应的介绍。
具体过程如下:
定义一个基类 Animal,其中有一个虛函数perform(),用于在子类中实现不同的表演行为。
#include <iostream>using namespace std;//封装 讲解员 基类
class Commentator
{
public:virtual void perform() = 0; //纯虚函数virtual ~Commentator(){} //虚解析函数
};//封装 Lion 派生类
class Lion : public Commentator
{
public:void perform() // 重写 perform 函数{cout << "狮子正在睡觉" << endl;}
};//封装 Elephant 派生类
class Elephant : public Commentator
{
public:void perform() // 重写 perform 函数{cout << "大象正在吃香蕉" << endl;}
};//封装 Monkey 派生类
class Monkey : public Commentator
{
public:void perform() // 重写 perform 函数{cout << "猴子正在爬树" << endl;}
};int main()
{Commentator *p1 = new Lion; //基类的指针指向派生类LionCommentator *p2 = new Elephant; //基类的指针指向派生类ElephantCommentator *p3 = new Monkey; //基类的指针指向派生类Monkeyp1->perform(); p2->perform(); p3->perform(); //通过父类指针调用基类中的重写函数delete p1; delete p2; delete p3;delete p1; delete p2; delete p3;return 0;
}

思维导图

相关文章:
C++作业day6
编程1: 封装一个动物的基类,类中有私有成员:姓名,颜色,指针成员年纪 再封装一个狗这样类,共有继承于动物类,自己拓展的私有成员有:指针成员:腿的个数(整型 …...
mysql的单表、多表查询和数据类型
一、MySQL数据库表操作 MySQL表的基本概念 在windows中有个程序叫做excel. 而Excel文件中存在了如sheet1、sheet2、sheet3的表, 所有的sheet都存储在这个Excel文件中, 在某个sheet中有相应的数据. 回到数据库和表的关系上来说, 这个Excel文件就是一个数据库, 所有的sheet就是…...
中间件-消息队列
消息队列基础知识 什么是消息队列 本处提到的消息队列是指各个服务以及系统组件/模块之间的通信,属于一种中间件。参与消息传递的双方称为生产者和消费者,生产者负责发送消息,消费者负责处理消息。 消息队列作用 通过异步处理࿰…...
一文get,最容易碰上的接口自动化测试问题汇总
本篇文章分享几个接口自动化用例编写过程遇到的问题总结,希望能对初次探索接口自动化测试的小伙伴们解决问题上提供一小部分思路。 sql语句内容出现错误 空格:由于有些字段判断是变量,需要将sql拼接起来,但是在拼接字符串时没有…...
Oracle:ORA-01830错误-更改数据库时间格式
1,先把报错SQL语句拿出来执行,看看是不是报的这个错 ORA-01830: 日期格式图片在转换整个输入字符串之前结束 2,然后查看默认日期格式是不是“YYYY-MM-DD HH24:MI:SS”(正确格式)。; 执行: SELECT * FRO…...
树状数组及应用
目录 1.树状数组的概念与基本编码 1.1.引导 1.2.lowbit(x) 1.3.树状数组的编码 2.树状数组的基本应用 2.1.单点修改+区间查询 2.2.区间修改单点查询 例题: 2.3.区间修改+区间查询 例题: 如果数列A是静态不变的ÿ…...
HarmonyOS 应用开发案例
本帖下方集中了HarmonyOS Next应用开发时,会遇到的常见应用案例。后续会持续更新大量案例,帮助开发者快速学习。欢迎感兴趣的同学加入Q:454901491 72.手写绘制及保存图片案例(0319更新)(点此查看源码实现&…...
【C++ leetcode】双指针(专题完结)
15. 三数之和 题目 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的…...
动态代理大总结
1.开启EnableAspectJAutoProxy注解 @EnableAspectJAutoProxy注解【相当于加了个BeanPostProcessor】,会导入AspectJAutoProxyReqistrar这个类,会把AnnotationAwareAspectJAutoProxyCreator注册进spring容器中,注册进容器后还会看这两个属性的值【proxyTargetClass,exposeP…...
理解Harris角点检测的数学原理
Harris角点检测的数学原理 Harris角点检测基于图像的局部自相似性,它通过分析图像窗口在各个方向上移动时灰度变化的程度来识别角点,它通过计算每个像素点的Harris响应值来评估该点是否为角点。数学上,这种变化可以通过构建一个二次型函数来量化,该函数基于图像在x和y方向上…...
ETIM -国际贸易的产品分类标准
ETIM 是除了XML 国际交流标准BMEcat之外的国际贸易的产品分类标准。 什么是ETIM ? ETIM是一种基于分类识别共享和交换产品数据的格式。这种广泛使用的技术产品分类标准是为了构建 B2B 专业人员之间的信息流而制定的。 为什么选择ETIM? ETIM分类模型的开…...
MySQL高阶SQL语句
文章目录 MySQL高阶SQL语句MySQL常用查询1、按关键字排序1.1 语法1.2 ASC和DESC1.3 对数据表中信息进行排序1.3.1 普通排序1.3.2 结合where进行条件过滤1.3.3 对多个字段进行排序 2、区间判断及查询不重复记录2.1 and/or —— 且/或2.1.1 普通查询2.1.2 嵌套/多条件查询 2.2 di…...
聊聊CSS
css 的介绍 学习目标 能够知道css的作用 1. css 的定义 css(Cascading Style Sheet)层叠样式表,它是用来美化页面的一种语言。 没有使用css的效果图 使用css的效果图 2. css 的作用 美化界面, 比如: 设置标签文字大小、颜色、字体加粗等样式。 控制页面布局, 比如…...
C语言 青蛙跳台阶问题
目录 编辑 1.问题描述 2.问题分析 3.全部代码 4.结语 1.问题描述 一只青蛙可以一次跳一级台阶,也可以一次跳两级台阶,如果青蛙要跳上n级台阶有多少种跳法? 2.问题分析 当台阶只有一级时,只能跳一级,所以只有一…...
【Django开发】前后端分离美多商城项目第3篇:用户部分,1. 后端接口设计:【附代码文档】
美多商城项目4.0文档完整教程(附代码资料)主要内容讲述:美多商城,项目准备1.B2B–企业对企业,2.C2C–个人对个人,3.B2C–企业对个人,4.C2B–个人对企业。项目准备,配置1. 修改settings/dev.py 文件中的路径信息,2. INS…...
DHCP snooping、DHCP安全及威胁防范
DHCP snooping、DHCP安全及威胁防范 [SW1]display dhcp snooping user-bind all,查看DHCP snooping表项。 DHCP snooping: 表项是通过服务器发送给客户端的ACK报文生成的。 只能在交换机上开启,路由器不支持,并且建议在接入交…...
用eclipse创建Web项目,通过Servlet实现Web访问的功能。
要使用Eclipse和Tomcat 10创建一个简单的Web项目,并通过Servlet实现Web访问功能,你需要遵循以下详细步骤: 1. 安装和配置Eclipse和Tomcat 10 确保你已经安装了Eclipse IDE for Java EE Developers和Tomcat 10。如果还没有安装,请…...
tools.jar下载 Unable to create schema compiler
网上查找了一堆下载tools.jar的都是忽悠人的,在这我就直接告诉大家,直接在电脑的JDK安装路径下的lib文件下复制就可以了。如果没有的话可以diss我我发给你...
【0278】checkpointer 共享内存(CheckpointerShmem)初始化(3)
0. 关于checkpointer 检查指针是Postgres 9.2的新特性。它处理所有检查点。自上次检查点以来,检查点在经过一定时间后自动分发,并且还可以发出信号来执行请求的检查点。(GUC参数要求每隔这么多WAL段就有一个检查点,这是通过后端在填充WAL段时发出信号来实现的; checkpointer…...
算法打卡day29|贪心算法篇03|Leetcode 1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果
算法题 Leetcode 1005.K次取反后最大化的数组和 题目链接:1005.K次取反后最大化的数组和 大佬视频讲解:K次取反后最大化的数组和视频讲解 个人思路 思路清晰,因为是取反当然是取越小的负数越好,那么先按绝对值排序。如果是负数就取反&#…...
GEO生成引擎优化:当品牌竞争从搜索结果页迁移到大模型对话窗口
当生成式AI成为信息的首要分发渠道,你的品牌还只盯着SEO吗?一、用户获取信息的路径,已经变了过去十几年,我们习惯了"搜索关键词 → 浏览结果页 → 点击进入网站"这条线性路径。SEO(搜索引擎优化)…...
2026年ERP+分销一体化还是独立部署?两种架构的优劣对比与选型建议
分销ERP的选型是一个典型的“三年决策”——今天选了什么,未来三年就要和它绑定。选小了,业务一扩张系统就撑不住;选大了,为用不上的功能付了高昂成本。更棘手的困境是“换系统”——已经跑了好几年的业务数据和流程,迁…...
MATLAB CGCS2000高斯投影坐标转经纬度坐标
坐标系转换这边需要用到mapping toolbox 首先根据原始(x,y)坐标对应的投影坐标系查询EPSG编号 例如这边CGCS2000 / 3-degree Gauss-Kruger CM 123E的编号就是4450 对应的编号可以https://blog.csdn.net/qq_41441896/article/details/104525296在这篇博…...
全栈开发的核心技能:掌握这4个技术,成为全栈工程师
对于很多深耕测试领域多年的软件测试从业者来说,“转全栈开发”早已不是一个陌生的方向——无论是为了突破职业瓶颈,还是为了打通测试到开发的链路,提升自己的端到端交付能力,抑或是拓展职业选择的边界,全栈工程师都是…...
SQL 排序分页精讲!ORDER BY+LIMIT 全套用法,报表分页
前言学会了条件查询、模糊查询之后,日常业务还有两个刚需场景:查出来的数据杂乱无章,想按年龄、时间、金额从小到大 / 从大到小排序;数据有成千上万条,一次性加载全部卡死,需要分页展示,一页只展…...
ElevenLabs支持贵州话吗?2024最新实测结果+3种绕过官方限制的合规接入方案
更多请点击: https://codechina.net 第一章:ElevenLabs对贵州话的原生支持现状与底层语音技术解析 ElevenLabs当前官方模型库中尚未提供针对贵州话(含贵阳话、遵义话等主要方言变体)的独立语言选项或预训练语音模型。其公开支持的…...
避坑指南:在Xilinx ZYNQ上调试Linux DMA驱动时常见的5个问题与解决方法
避坑指南:在Xilinx ZYNQ上调试Linux DMA驱动时常见的5个问题与解决方法 当工程师在Xilinx ZYNQ平台上开发Linux DMA驱动时,往往会遇到一些看似简单却极具迷惑性的问题。这些问题轻则导致数据传输失败,重则引发系统崩溃。本文将聚焦五个最具代…...
ChatGPT写代码总出错?揭秘92%开发者忽略的3层提示工程校验机制
更多请点击: https://intelliparadigm.com 第一章:ChatGPT写代码总出错?揭秘92%开发者忽略的3层提示工程校验机制 当ChatGPT生成的代码在本地运行失败、逻辑错位或依赖缺失时,问题往往不在模型本身,而在于提示&#x…...
CANN/asc-devkit:UB到GM数据拷贝函数
asc_copy_ub2gm 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…...
