C++_day6

思维导图:

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;int *age;
protected:public:Animal(){cout << "Animal::无参构造函数" << endl;}Animal(string name,string color,int age):name(name),color(color),age(new int(age)){cout << "Animal::有参构造函数" << endl;}~Animal(){cout << "Animal::析构函数" << endl;delete age;}Animal(const Animal &other):name(other.name),color(other.color),age(new int(*other.age)){cout << "Animal::拷贝构造函数" << endl;}Animal &operator=(const Animal &other){if(this != &other){name = other.name;color = other.color;age = new int(*other.age);}cout << "Animal::拷贝赋值函数" << endl;return *this;}void show(){cout << name << " " << color << " " << *age << " ";}
};
class Dog:public Animal
{
private:int *count;
public:void speak(){cout << "汪汪汪~" << endl;}Dog(){cout << "Dog::无参构造函数" << endl;}Dog(string name,string color,int age,int count):Animal(name,color,age),count(new int(count)){cout << "Dog::有参构造函数" << endl;}~Dog(){cout << "Dog::析构函数" << endl;delete count;}Dog(const Dog &other):Animal(other),count(new int(*other.count)){cout << "Dog::拷贝构造函数" << endl;}Dog &operator=(const Dog &other){if(this != &other){Animal::operator=(other);count = new int(*other.count);}cout << "Dog::拷贝赋值函数" << endl;return *this;}void show(){Animal::show();cout << *count << endl;}
};
int main()
{Dog d1;Dog d2("小黑","黑色",5,4);d2.show();Dog d3(d2);d3.show();d1=d3;d1.show();return 0;
}

运行结果:

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

 

#include <iostream>using namespace std;class Animal
{
private:string name;string color;int *age;
protected:public:Animal(){cout << "Animal::无参构造函数" << endl;}Animal(string name,string color,int age):name(name),color(color),age(new int(age)){cout << "Animal::有参构造函数" << endl;}~Animal(){cout << "Animal::析构函数" << endl;delete age;}Animal(const Animal &other):name(other.name),color(other.color),age(new int(*other.age)){cout << "Animal::拷贝构造函数" << endl;}Animal &operator=(const Animal &other){if(this != &other){name = other.name;color = other.color;age = new int(*other.age);}cout << "Animal::拷贝赋值函数" << endl;return *this;}virtual void perform() = 0;void show(){cout << name << " " << color << " " << *age << " ";}
};
class Elephant:public Animal
{
private:int *count;
public:void perform(){cout << "喷水  吃香蕉" << endl;}Elephant(){cout << "Elephant::无参构造函数" << endl;}Elephant(string name,string color,int age,int count):Animal(name,color,age),count(new int(count)){cout << "Elephant::有参构造函数" << endl;}~Elephant(){cout << "Elephant::析构函数" << endl;delete count;}Elephant(const Elephant &other):Animal(other),count(new int(*other.count)){cout << "Elephant::拷贝构造函数" << endl;}Elephant &operator=(const Elephant &other){if(this != &other){Animal::operator=(other);count = new int(*other.count);}cout << "Dog::拷贝赋值函数" << endl;return *this;}void show(){Animal::show();cout << *count << endl;}
};
class Lion:public Animal
{
private:int *count;
public:void perform(){cout << "钻火圈" << endl;}Lion(){cout << "Lion::无参构造函数" << endl;}Lion(string name,string color,int age,int count):Animal(name,color,age),count(new int(count)){cout << "Lion::有参构造函数" << endl;}~Lion(){cout << "Lion::析构函数" << endl;delete count;}Lion(const Lion &other):Animal(other),count(new int(*other.count)){cout << "Lion::拷贝构造函数" << endl;}Lion &operator=(const Lion &other){if(this != &other){Animal::operator=(other);count = new int(*other.count);}cout << "Dog::拷贝赋值函数" << endl;return *this;}void show(){Animal::show();cout << *count << endl;}
};
int main()
{Elephant e1("大象","五彩",6,4);Lion l1("狮子","棕黄色",4,4);e1.perform();l1.perform();return 0;
}

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

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

相关文章

2024全新红娘交友系统定制版源码 | 相亲交友小程序源码 全开源可二开

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 全新红娘交友系统定制版源码 | 相亲交友小程序源码 全开源可二开 定制版红娘交友平台小程序源码&#xff0c;很牛逼的东西&#xff0c;虽然是小程序&#xff0c;但是有700多M大&…

modbus客户端

通信方式支持 串口 / udp / tcp通信&#xff1b; 设备协议支持RTU / ASCII / TCP&#xff1b; 读取类型支持bool / short / int / float / double / long / batchbool / batchword

JAVA八股day1

遇到的问题 相比于包装类型&#xff08;对象类型&#xff09;&#xff0c; 基本数据类型占用的空间往往非常小为什么说是几乎所有对象实例都存在于堆中呢&#xff1f;静态变量和成员变量、成员变量和局部变量的区别为什么浮点数运算的时候会有精度丢失的风险&#xff1f;如何解…

MySQL Enterprise Backup (MEB) for MySQL 8.0 深入解析及企业级备份恢复演练

一、备份恢复核心概念 MEB简介 MySQL Enterprise Backup 是 Oracle 提供的专业物理备份工具&#xff0c;专为MySQL 8.0及以后版本设计&#xff0c;提供高效且低干扰的在线备份解决方案。它能够实现对InnoDB存储引擎数据的快速备份&#xff0c;并兼容MySQL的诸多高级特性。 主…

【Chapter1】操作系统概述,计算机操作系统教程,第四版,左万利,王英

文章目录 一、操作系统的基本概念1.1操作系统的层次结构1.2操作系统的运行视图1.3操作系统的概念(定义)1.4操作系统的功能和目标1.4.1操作系统的功能和目标——作为系统资源的管理者1.4.2操作系统的功能和目标——向上层提供方便易用的服务1.4.2.1GUI&#xff1a;图形化用户接口…

python 基础知识点(蓝桥杯python科目个人复习计划65)

今日复习内容&#xff1a;做题 例题1&#xff1a;遥远的雪国列车 问题描述&#xff1a; 小蓝和小红今天在房间里一起看完了“雪国列车”这部电影&#xff0c;看完之后他们感触颇深&#xff0c;同时他们想到了这样一道题目&#xff1a; 现在有一个数轴&#xff0c;长度为N&a…

PyTorch学习笔记之激活函数篇(二)

文章目录 2、Tanh函数2.1 公式2.2 对应的图像2.3 对应生成图像代码2.4 优点与不足2.5 torch.tanh()函数 2、Tanh函数 2.1 公式 Tanh函数的公式&#xff1a; f ( x ) e x − e − x e x e − x f(x)\frac{e^x-e^{-x}}{e^xe^{-x}} f(x)exe−xex−e−x​ Tanh函数的导函数&am…

在Latex中优雅的插入svg图片(Ubuntu22.04)

文章目录 一、前言二、准备工作三、脚本编程四、结论 一、前言 在 LaTeX \LaTeX LATE​X 中&#xff0c;插入图片常用的为 figure 环境加 \includegraphics 命令&#xff1a; \begin{figure}[!htbp]\centering\includegraphics[width\textwidth]{图片名.jpg/jpeg/png/pdf}\c…

Java SE入门及基础(40)

目录 自定义异常 1. 为什么要使用自定义异常 自定义运行时异常语法 自定义检查异常语法 示例 2. 异常使用注意事项 Java SE文章参考:Java SE入门及基础知识合集-CSDN博客 自定义异常 1. 为什么要使用自定义异常 在Java 中&#xff0c;异常的类型非常的多&#xff0c;…

CSS 零基础入门教程

目录 1. div 和 span2. 什么是CSS&#xff1f;3. CSS 引入方式3.1 内部样式表3.2 外部样式表3.3 行内样式 4. 选择器4.1 标签选择器4.2 类选择器4.3 id 选择器4.4 通配符选择器 5. CSS 基础属性6. 谷歌浏览器调试工具 正文开始。 1. div 和 span 在学习 CSS 之前&#xff0c;…

什么是网站?为什么要搭建网站?

网站&#xff1a;简单来说&#xff0c;网站就是通过互联网来展示信息的页面集合。它可以在电脑或者手机上打开&#xff0c;提供各种功能&#xff0c;比如查看新闻、购买商品、搜索信息等。 一、建网站的目的&#xff1a;展示个人或企业的存在 网站建设的首要目的之一是展示个人…

【C++】三大特性之多态

1 定义及实现 1.1 概念 多态是C三大特性之一。通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同的状态。 多态是在不同继承关系的类对象&#xff0c;去调用同一函数&#xff0c;产生了不同的行为。比如学…

简化您的网络连接 —— socks5代理,怎么轻松设置

您需要 SOCKS5 代理吗&#xff1f;在本文中&#xff0c;我们将向您展示逐步的 SOCKS5 代理设置。了解如何获取 SOCKS5 和其他代理协议 —— HTTP 和 HTTPS 代理。 正在寻找 SOCKS5 代理&#xff1f;幸运的是&#xff0c;Smartdaili 现在支持 SOCKS5 协议以及住宅、移动和专用数…

Java后端面试:框架篇高频面试(Spring、SpringMVC、SpringBoot、MyBatis)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Java后端面试&#xff1a;MySQL面试篇&#xff08;底层事务、SQL调优&#xff09; &#x1f4da;订阅专栏&#xff1a;Java后端面…

十四、ReadWriteLock

ReadWriteLock 读写锁 又叫排他锁 如果使用互斥锁&#xff0c;一个线程在读&#xff0c;其他线程也不能读也不能写 换成读写锁的时候&#xff0c;读线程是读锁&#xff0c;写线程是写锁&#xff0c;写锁是排他的 在多线程大大提高效率&#xff0c;当一个线程在读的时候&…

高可用篇_A Docker容器化技术_IV Dockerfile的基本概念和应用

原创作者&#xff1a;田超凡&#xff08;程序员田宝宝&#xff09; 版权所有&#xff0c;引用请注明原作者&#xff0c;严禁复制转载 DockerFile 解析 一个镜像文件到底是如何创建&#xff1f; dockerfile 描述出镜像文件需要的一些依赖配置和环境变量 执行命令将我们docker…

glib交叉编译

Glib交叉编译 逸一时&#xff0c;误一世。 —— 田所浩二「夏夜银梦」 交叉编译 GLib 涉及到在一个平台上生成能够在另一个平台上运行的目标文件。在这种情况下&#xff0c;我们将会在一台主机&#xff08;通常是开发机器&#xff09;上使用交叉编译工具链来构建 GLib 库&#…

从历年315曝光案例,看APP隐私合规安全

更多网络安全干货内容&#xff1a;点此获取 ——————— 随着移动互联网新兴技术的发展与普及&#xff0c;移动APP的应用渗透到人们的衣食住行方方面面&#xff0c;衍生出各类消费场景的同时&#xff0c;也带来了无数的个人隐私数据泄露、网络诈骗事件。 历年来&#xff…

grpc python实现异步调用(不用grpc异步接口)

grpc python实现异步调用[不用grpc异步接口] 1.infer_session.proto2.生成Python库函数3.infer_session_server.py4.infer_session_client.py5.common.py6.运行7.输出 grpc同步调用更简单,但是在处理复杂任务时,会导致请求阻塞,影响吞吐。当然,可以采用grpc异步接口解决,本方采…

机器人在果园内行巡检仿真

文章目录 创建工作空间仿真果园场景搭建小车模型搭建将机器人放在仿真世界中创建工作空间 mkdir -p ~/catkin_ws/src cd ~/catkin_ws仿真果园场景搭建 cd ~/catkin_ws/src git clone https://gitcode.com/clearpathrobotics/cpr_gazebo.git小车模型搭建 DiffBot是一种具有两个…