day6 3/18

2.试编程:

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

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

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

eg : Dog d1;

Dog d2(.....);

Dog d3(d2);

d1 = d3;

#include <iostream>

using namespace std;
class  zoo
{
private:
    string name;
    string color;
    int* y;
public:
     zoo()
     {

     }
     zoo(string name,string color, int y):name(name),color(color),y(new int(y))
     {
         cout << "父类:有参构造函数" << endl;
     }
     ~zoo()
     {
         delete y;
         cout << "父类:析构函数" << endl;
     }
     zoo(const zoo &other):name(other.name),color(other.color),y(other.y)
     {
         cout  << "父类:拷贝构造函数" << endl;
     }
     zoo &operator=(const zoo &other)
     {
         if( this !=&other)
         {
             name=other.name;
             color=other.color;
             y=new int(*other.y);
         }
         cout << "父类:拷贝赋值函数" << endl;
         return  *this;
     }
     void show()
     {
         cout << name << endl;
         cout << color << endl;
         cout << *y << endl;
     }
};
class dog:public zoo
{
private:
    int * leg;
public:
    dog(){}
    dog( int leg,string name,string color,int y):zoo(name,color,y),leg(new int(leg))
    {
        cout << "子类:有参构造函数" << endl;
    }
    ~dog()
    {
        delete  leg;
          cout << "子类:析构函数" << endl;
    }
    dog(const dog &other):zoo(other),leg(other.leg)
    {
        cout << "子类:拷贝构造函数" << endl;
    }
    dog &operator=(const dog &other)
    {
        if(this != &other)
        {
            zoo::operator=(other);
            leg=other.leg;
        }
        cout << "子类:拷贝赋值函数" << endl;
         return *this;
    }
    void show()
    {
        cout << *leg << endl;
        zoo::show();
    }

};

int main()
{
     dog s(4,"zwt","yellow",3);
     dog s1;

     s1=s;
      dog s2(s1);
     s.show();
     s1.show();
     s2.show();
    return 0;
}

3.编程题:

以下是一个简单的比喻,将多态概念与生活中的实际情况相联系:

比喻:动物园的讲解员和动物表演

想象一下你去了一家动物园,看到了许多不同种类的动物,如狮子、大象、猴子等。现在,动物园里有一位讲解员,他会为每种动物表演做简单的介绍。

在这个场景中,我们可以将动物比作是不同的类,而每种动物表演则是类中的函数。而讲解员则是一个基类,他可以根据每种动物的特点和表演,进行相应的介绍。

具体过程如下:

定义一个基类 Animal,其中有一个虛函数perform(),用于在子类中实现不同的表演行为

#include <iostream>

using namespace std;

class human
{
private:
    string name;
public:
    human() {}
    human(string name):name(name)
    {
        cout << "我是讲解员:" << name << endl;
    }
    virtual void speak() = 0;
    virtual ~human()
    {
        cout << "稍等" << endl;
    }
};
class elephant:public human
{
private:
    string name;
public:
    elephant() {}
    elephant(string n,string name):human(n),name(name){}
    void speak()
    {
        cout << "这是我们园内最出名的熊猫,叫" << name << ",他最喜欢吃嫩笋" << endl;
    }
};
class monkey:public human
{
private:
    string name;
public:
    monkey (){}
    monkey(string n,string name):human(n),name(name){}
    void speak()
    {
        cout << "接下来让我们看看大明星——长颈鹿,名为:" << name << ",他十分喜欢散步" << endl;
    }


};
int main()
{
    elephant e1("meldy","圆圆");
    human *p = &e1;
    p->speak();
    monkey m1("meldy","欢欢");
    p = &m1;
    p->speak();
}

 

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

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

相关文章

【JavaEE -- 多线程进阶 - 面试重点】

多线程进阶 1. 常见锁策略1.1 乐观锁和悲观锁1.2 轻量级锁和重量级锁1.3 自旋锁和挂起等待锁synchronized具有自适应能力1.4 普通互斥锁和读写锁1.5 公平锁和非公平锁1.6 可重入锁和不可重入锁 2. Synchronized原理&#xff08;特点、加锁过程、自适应&#xff09;2.1 Synchron…

数据结构(三)——栈

三、栈、队列和数组 3.1 栈 3.1.1 栈的基本概念 线性表是具有相同数据类型的n&#xff08;n≥0&#xff09;个数据元素的有限 序列&#xff0c;其中n为表长&#xff0c;当n 0时线 性表是一个空表。若用L命名线性表&#xff0c;则其一般表示为 L (a1, a2, … , ai , ai1, ……

【STL源码剖析】【2、空间配置器——allocator】

文章目录 1、什么是空间配置器&#xff1f;1.1设计一个简单的空间配置器&#xff0c;JJ::allocator 2、具备次配置力( sub-allocation)的 SGI 空间配置器2.1 什么是次配置力2.2 SGI标准的空间配置器&#xff0c;std::allocator2.2 SGI特殊的空间配置器&#xff0c;std::alloc2.…

ARM汇编与逆向工程 蓝狐卷 基础知识

文章目录 前言内容简介作者简介译者简介目录 前言 与传统的CISC&#xff08;Complex Instruction Set Computer&#xff0c;复杂指令集计算机&#xff09;架构相比&#xff0c;Arm架构的指令集更加简洁明了&#xff0c;指令执行效率更高&#xff0c;能够在更低的功耗下完成同样…

13 秒插入 30 万条数据,这才是 Java 批量插入正确的姿势!

本文主要讲述通过MyBatis、JDBC等做大数据量数据插入的案例和结果。 30万条数据插入插入数据库验证 实体类、mapper和配置文件定义 User实体 mapper接口 mapper.xml文件 jdbc.properties sqlMapConfig.xml 不分批次直接梭哈 循环逐条插入 MyBatis实现插入30万条数据 J…

python redis中blpop和lpop的区别

python redis中lpop()方法是获取并删除左边第一个对象。 def lpop(self,name: str,count: Optional[int] None,) -> Union[Awaitable[Union[str, List, None]], Union[str, List, None]]:"""Removes and returns the first elements of the list name.By de…

2258: 【搜索】【广度优先】最少转弯问题

题目描述 给出一张地图&#xff0c;这张地图被分为nm&#xff08;n,m<100&#xff09;个方块&#xff0c;任何一个方块不是平地就是高山。平地可以通过&#xff0c;高山则不能。现在你处在地图的&#xff08;x1,y1&#xff09;这块平地&#xff0c;问&#xff1a;你至少需要…

Vulnhub - Morpheus

希望和各位大佬一起学习&#xff0c;如果文章内容有错请多多指正&#xff0c;谢谢&#xff01; 个人博客链接&#xff1a;CH4SER的个人BLOG – Welcome To Ch4sers Blog Morpheus 靶机下载地址&#xff1a;Matrix-Breakout: 2 Morpheus ~ VulnHub 0x01 信息收集 Nmap扫描…

Spring学习记录

为什么要学Spring&#xff1f; 在回答这个问题时&#xff0c;我们先来看看现在的Java程序是如何实现的&#xff0c;以最简单的服务层与持久层为例&#xff0c;其遵循接口与具体实现类的这种方式&#xff1a; Service层接口&#xff1a;BookService.java package service; pu…

mysql笔记:22. 事务隔离级别的一种通俗讲解

事务隔离级别&#xff0c;是为了解决多个并行事务竞争导致的数据安全问题的一种规范。具体来说&#xff0c;多个事务竞争可能会产生三种不同的现象。假设有两个事务T1、T2同时执行&#xff0c;有如下三种不同的情形&#xff1a; T1可能会读到T2未提交的数据&#xff0c;但是未…

粤嵌6818开发板通过MobaXterm使用SSH连接开发板

链接&#xff1a;https://pan.baidu.com/s/18ISP4Ub1HtQx6jCvTQTUHw?pwdfjmu 提取码&#xff1a;fjmu 1.把SSH_config.tar.bz 下载到开发板中 2.解压 SSH_config.tar.bz 解压命令&#xff1a;tar -xzvf SSH_config.tar.bz 3.配置SSH 进入SSH/openssh目录&am…

关于Zookeeper分布式锁

背景 之前说到分布式锁的实现有三种 1、基于数据库实现的分布式锁 2、Redis分布式锁 3、Zookeeper分布式锁 前者redis分布式锁博客已具体介绍&#xff0c;此博客最终决定补齐关于Zookeeper分布式锁的实现原理。 简述 Zoopkeeper&#xff0c;它是一个为分布式的协调服务&…

Vertex cover preprocessing for influence maximization algorithms

Abstract 影响力最大化问题是社交网络分析中的一个基本问题&#xff0c;其目的是选择一小组节点作为种子集&#xff0c;并在特定的传播模型下最大化通过种子集传播的影响力。本文研究了独立级联模型下影响力最大化算法中执行顶点覆盖作为预处理的效果。所提出的方法从主要计算过…

考研复习C语言进阶(4)

1. 为什么存在动态内存分配 我们已经掌握的内存开辟方式有&#xff1a; int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间 但是上述的开辟空间的方式有两个特点&#xff1a; 1. 空间开辟大小是固定的。 2. 数组在申明的时候&#…

Stm32-使用TB6612驱动电机及编码器测速

这里写目录标题 起因一、电机及编码器的参数二、硬件三、接线四、驱动电机1、TB6612电机驱动2、定时器的PWM模式驱动电机 五、编码器测速1、定时器的编码器接口模式2、定时器编码器模式测速的原理3、编码器模式的配置4、编码器模式相关代码5、测速方法 六、相关问题以及解答1、…

软件测试入门基础

说到软件测试&#xff0c;那么首先得和没有基础的同学们&#xff0c;讲解一下&#xff0c;平时我们使用的那些app&#xff0c;比如淘宝&#xff0c;微信是怎么进行交互的呢&#xff1f;在淘宝上下个订单&#xff0c;按钮按出去为什么就能下单成功呢&#xff1f;微信看朋友圈&am…

组建对等网

一、概念 对等网络&#xff08;Peer-to-Peer, P2P&#xff09;是一种分布式网络架构&#xff0c;其中每个参与节点&#xff08;称为"对等体"或"节点"&#xff09;既可以作为客户端也可以作为服务器&#xff0c;直接与网络中的其他节点分享资源&#xff08…

windows上安装虚拟机及搭建Linux环境

虚拟机的安装 VMware Workstation Player(虚拟机)&#xff0c;下载网址如下: VMware Workstation Player | VMwarehttps://www.vmware.com/content/vmware/vmware-published-sites/us/products/workstation-player.html.html?srcWWW_Player7Pro_US_HPPromo_Introducing 进入网…

8.Python从入门到精通—Python 字符串,转义字符,字符串运算符

8.Python从入门到精通—Python 字符串,转义字符,字符串运算符 Python 字符串创建字符串访问字符串中的字符字符串切片字符串操作符字符串方法 Python 转义字符Python字符串运算符 Python 字符串 在 Python 中&#xff0c;字符串是一种基本数据类型&#xff0c;用于表示文本数据…

深度学习pytorch——基本数据类型创建Tensor(持续更新)

声明&#xff1a;本深度学习笔记基于课时18 索引与切片-1_哔哩哔哩_bilibili学习而来 All is about Tensor 定义&#xff1a;Tensors are simply mathematical objects that can be used to describe physical properties, just like scalars and vectors. In fact tensors a…