3.18_C++_day6_作业

作业要求:

程序代码:

#include <iostream>

using namespace std;


class Animal
{
private:
    string name;
    string color;
    int *age;
public:
    //无参构造函数
    Animal()
    {
        cout << "Animal::无参构造函数" << endl;
    }
    //有参构造函数
    Animal(string name,string color,int age):name(name),color(color),age(new int(age))
    {
        cout << "Animal::有参构造函数" << endl;
    }
    //析构函数
    ~Animal()
    {
        delete age;
        cout << "Animal::析构函数" << endl;
    }
    //拷贝构造函数
    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;
    }

};
class Dog:public Animal
{
private:
    int *legs;
public:
    //无参构造函数
    Dog()
    {
         cout << "Dog::无参构造" << endl;
    }
    //有参构造函数
    Dog(int legs,string name,string color,int age):Animal(name,color,age),legs(new int(legs))
    {
        cout << "Dog::有参构造函数" << endl;
    }
    //析构函数
    ~Dog()
    {
        delete legs;
        cout << "Dog::析构函数" << endl;
    }
    //拷贝构造函数
    Dog(const Dog &other):Animal(other),legs(new int(*other.legs))
    {
        cout << "Dog::拷贝构造构造" << endl;
    }
    //拷贝赋值函数
    Dog &operator=(const Dog &other)
    {
        if(this != &other)
        {
            Animal::operator=(other);
            legs = new int(*other.legs);
        }
        cout << "Dog::拷贝赋值函数" << endl;
        return *this;
    }
    void speak()
    {
        cout << "汪汪汪" << endl;
    }
};
int main()
{
    Dog d1;//实例化d1对象 不初始化 走无参构造
    Dog d2(4,"xiaohuang","yellow",3);//实例化d2 并初始化
    Dog d3(d2);//实例化d3 并使用d2给其初始
    d1 = d3;  //将d3 赋值给d1
    d1.speak();
    d2.speak();
    d3.speak();
    return 0;
}

运行结果:

作业要求:

程序代码:

#include <iostream>

using namespace std;

//封装一个 讲解动物 类
class Animal
{
public:
    Animal(){}
    virtual void perform() = 0;
};


//封装一个 狮子 类 公有继承Animal
class Lion:public Animal
{
private:
    string name;
public:
    Lion(){}
    Lion(string name):name(name){}
    //重写虚函数
    void perform()
    {
        cout << name << ":跳舞" << endl;
    }
};
//封装一个 大象 类 共有继承Animal
class Elephant:public Animal
{
private:
    string name;
public:
    Elephant() {}
    Elephant(string name):name(name)
    {}
    //重写虚函数
    void perform()
    {
        cout << name << ":唱歌" << endl;
    }
};


//封装一个 猴子 类 共有继承Animal
class Monkey:public Animal
{
private:
    string name;
public:
    Monkey(){}
    Monkey(string name):name(name){}
    //重写虚函数
    void perform()
    {
        cout << name << ":杂耍" << endl;
    }
};


int main()
{
    //狮子类实例化一个对象 并初始化
    Lion l1("狮子");
    //使用基类指针 指向狮子子类对象l1
    Animal *p =&l1;
    p->perform();//展开狮子子类功能


    //大象类实例化对象
    Elephant e1("大象");
    p = &e1;
    p->perform();


    //猴子实例化对象
    Monkey m1("猴子");
    p = &m1;
    p->perform();

    return 0;
}

运行结果:

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

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

相关文章

基于深度学习的生活垃圾智能分类系统(微信小程序+YOLOv5+训练数据集+开题报告+中期检查+论文)

摘要 本文基于Python技术&#xff0c;搭建了YOLOv5s深度学习模型&#xff0c;并基于该模型研发了微信小程序的垃圾分类应用系统。本项目的主要工作如下&#xff1a; &#xff08;1&#xff09;调研了移动端垃圾分类应用软件动态&#xff0c;并分析其优劣势&#xff1b;…

附近最小 单调队列 滑动窗口 蓝桥杯

q[t]i 的执行过程如下&#xff1a; 首先&#xff0c;t 的值会先自增 1。然后&#xff0c;新值 i 被赋给 q[t]&#xff0c;即元素 i 被插入到数组 q 的下标为 t 的位置上。 q[t]i 的执行过程如下&#xff1a; 首先&#xff0c;i 的值被赋给 q[t]&#xff0c;即元素 i 被插入到数…

深度学习pytorch——可视化visdom(持续更新)

安装可看&#xff1a;e: Error while finding module specification for ‘visdom.server‘ (ModuleNotFoundError: No module name-CSDN博客 在命令行窗口使用python -m visdom.server&#xff0c;会出现一个web地址&#xff0c;在浏览器中访问&#xff0c;即可看见在python中…

2024年noc指导教师认证测评参考试题题目3-4合集

[noc指导教师认证] 测评参考试题 说明:NOC教师指导认证考试题目是从题库里抽题,因此每位老师每次考试题目都不一样以下题目为测试考试时收集到的一些题目,作为辅助提供给各位老师,老师们可以记住题目及答案的具体内容 (选项顺序会变),以免考试时遇到。2024年的做的题目有的…

C++基础9:继承与派生

此专栏为移动机器人知识体系下的编程语言中的 C {\rm C} C从入门到深入的专栏&#xff0c;参考书籍&#xff1a;《深入浅出 C {\rm C} C》(马晓锐)和《从 C {\rm C} C到 C {\rm C} C精通面向对象编程》(曾凡锋等)。 8.继承与派生 8.1 继承与派生基础 继承与派生举例理解&#…

C++函数参数传递

目录 传值参数 指针形参 传引用参数 使用引用避免拷贝 使用引用形参返回额外信息 const形参和实参 指针或引用形参与const 数组形参 管理指针形参 使用标记指定数组长度 使用标准库规范 显式传递一个表示数组大小的形参 数组形参和const 数组引用形参 传递多维数…

mysql基础1sql分类

mysql基础 [rootvm ~]# docker run -itd -p 3306:3306 -e "MYSQL_ROOT_PASSWORD123456" mysql:5.7.26通用语法 1). SQL语句可以单行或多行书写&#xff0c;以分号结尾。 2). SQL语句可以使用空格/缩进来增强语句的可读性。 3). MySQL数据库的SQL语句不区分大小写…

(ES6)前端八股文修炼Day2

1. let const var 的区别 var&#xff1a; var 是在 ES5 中引入的声明变量的关键字。 具有函数作用域&#xff0c;而不是块作用域&#xff0c;这意味着使用 var 声明的变量在函数内部是可见的。 变量可以被重复声明&#xff0c;而且变量的值可以在声明前使用&#xff0c;这可能…

阿里云服务器租用价格表,2024年1个月和一年优惠价格表

2024年腾讯云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新的云服务器优惠券…

每日一题 --- 反转链表[力扣][Go]

反转链表 题目&#xff1a;206. 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&a…

AtCoder Regular Contest 174 A~E

A.A Multiply&#xff08;贪心&#xff09; 题意&#xff1a; 给你一个长度为 N N N 、 A ( A 1 , A 2 , … , A N ) A(A_1,A_2,\dots,A_N) A(A1​,A2​,…,AN​) 和整数 C C C 的整数序列。 在进行最多一次以下操作后&#xff0c;求 A A A 中元素的最大可能和&#xff…

为什么安装了4GB的内存条,却显示只有3.8GB?

朋友们&#xff0c;对于计算机而言&#xff0c;其基本包含三部分。 第一&#xff0c;CPU; 第二&#xff0c;存储器&#xff08;内存、物理内存&#xff09;&#xff1b;第三&#xff0c;输入设备、输出设备。 32位的地址总线&#xff0c;其地址范围就是 CPU 访问内存&#xf…

小车倒立摆系统极点配置,LQR闭环控制

在之前直流电机控制仿真里有讲过状态控制的基本架构&#xff0c;有兴趣的同学可以再回去看看&#xff0c;链接如下好玩的直流电机调速实验、PID、极点配置、LQR、观测器&#xff1b;不讲大道理_lqr控制器观测器-CSDN博客 在专栏的前三篇文章 小车倒立摆物理建模与simulink仿真…

【消息队列开发】 设计网络通信协议

文章目录 &#x1f343;前言&#x1f38d;明确需求&#x1f340;设计应用层协议&#x1f384;定义 Request / Response&#x1f334;定义参数父类与返回值父类&#x1f332;定义其他参数类&#x1f333;定义其他返回类⭕总结 &#x1f343;前言 本次开发任务 设计网络通信协议…

带3090显卡的Linux服务器上部署SDWebui

背景 一直在研究文生图&#xff0c;之前一直是用原始模型和diffuser跑SD模型&#xff0c;近来看到不少比较博主在用 SDWebui&#xff0c;于是想着在Linux服务器上部署体验一下&#xff0c;谁知道并没有想象的那么顺利&#xff0c;还是踩了不少坑。记录一下过程&#xff0c;也许…

基于springboot+vue的高校专业实习管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

数据结构面试常见问题之串的模式匹配(KMP算法)系列-大师改进实现以及原理

&#x1f600;前言 KMP算法是一种改进的字符串匹配算法&#xff0c;由D.E.Knuth&#xff0c;J.H.Morris和V.R.Pratt提出的&#xff0c;因此人们称它为克努特—莫里斯—普拉特操作&#xff08;简称KMP算法&#xff09;。KMP算法的核心是利用匹配失败后的信息&#xff0c;尽量减少…

CentOS7配置静态ip

CentOS7进入root账户,点击右上角 点击有线设置 点击有线设置,查看目前ip地址,记住,点击ipv4 点击手动,在下面的地址写你自己想要的IP地址,注意只有最后的100可以改,146改成你自己的网段,网关和DNS最后一位都写2就行了 注意DNS一定要写,要不然让他自动找不到,会断网 在这个位置…

云计算安全分析

目录 一、概述 二、《云计算服务安全指南》的云安全风险分析 2.1 客户对数据和业务系统的控制能力减弱 2.2 客户与云服务商之间的责任难以界定 2.3 可能产生司法管辖权问题 2.4 数据所有权保障面临风险 2.5 数据保护更加困难 2.6 数据残留 2.7 容易产生对云服务商的过度…
最新文章