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;如何解…

【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…

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;产生了不同的行为。比如学…

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;当一个线程在读的时候&…

glib交叉编译

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

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

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

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

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

Vmware虚拟机配置虚拟网卡

背景 今天同事咨询了我一个关于虚拟机的问题&#xff0c;关于内网用Vmware安装的虚拟机&#xff0c;无法通过本机访问虚拟上的Jenkins的服务。   验证多次后发现有如下几方面问题。 Jenkins程序包和JDK版本不兼容&#xff08;JDK1.8对应Jenkins不要超过2.3.57&#xff09;虚…

信号量——生产消费者模型

前文 在这一篇博客&#xff08;信号量博客&#xff09;中我曾经提及过信号量的知识&#xff0c;而当对信号量进行提炼总结时&#xff0c;大致是以下三点&#xff1a; 1. 信号量本质是一个计数器&#xff08;代表资源的数量&#xff09; 2. 申请信号量本质就是对资源的一种预定机…

final关键字

final关键字 基本介绍final使用细节 基本介绍 final 中文意思&#xff1a;最后的&#xff0c;最终的。 final 可以修饰类、属性、方法和局部变量。 在某些情况下会使用到final&#xff1a; 1&#xff09; 当不希望类被继承时&#xff0c;可以用 final 修饰&#xff1b; // 如…

Python--成员方法、@staticmethod将成员方法静态化、self参数释义

在 Python 中&#xff0c;成员方法是指定义在类中的函数&#xff0c;用于操作类的实例对象。成员方法通过第一个参数通常命名为 self&#xff0c;用来表示调用该方法的实例对象本身。通过成员方法&#xff0c;可以实现类的行为和功能。 成员方法的定义 在类中定义成员…

【Linux】Linux上代码的编译与调试

目录 Linux上常用的编译器gcc\g 如何使用gcc/g 编译过程&#xff1a; 如何使用gcc编译&#xff1f; 进行预处理 进行编译 进行汇编 进行链接 函数库 函数库的分类 gcc选项 Linux调试器-gdb的使用 gdb的常用参数 Linux项目自动化构建工具make/Makefile 原理 利用…