当前位置: 首页 > news >正文

C++作业5

完成沙发床的多继承(有指针成员)

代码:

#include <iostream>

using namespace std;

class Bed
{
private:
    double *money;
public:
    Bed(){cout << "Bed::无参构造函数" << endl;}

    Bed(double money):money(new double(money))
    {
        cout << "Bed::有参构造函数" << endl;
    }

    Bed(const Bed &other):money(new double(*(other.money)))
    {
        cout << "Bed::拷贝构造函数" << endl;
    }

    Bed &operator=(const Bed &other)
    {
        if(this != &other){
            money = new double(*(other.money));
        }
        cout << "Bed::拷贝赋值函数" << endl;
        return *this;
    }

    ~Bed()
    {
        delete(money);
        money = nullptr;
        cout << "Bed::析构函数" << endl;
    }

    void show()
    {
        cout << "money=" << *money << endl;
    }
};

class Sofa
{
private:
    double *leight;
public:
    Sofa(){cout << "Sofa::无参构造函数" << endl;}

    Sofa(double leight):leight(new double(leight))
    {
        cout << "Sofa::有参构造函数" << endl;
    }

    Sofa(const Sofa &other):leight(new double(*(other.leight)))
    {
        cout << "Sofa::拷贝构造函数" << endl;
    }

    Sofa &operator=(const Sofa &other)
    {
        if(this != &other){
            leight = new double(*(other.leight));
        }
        cout << "Sofa::拷贝赋值函数" << endl;
        return *this;
    }

    ~Sofa()
    {
        delete(leight);
        leight = nullptr;
        cout << "Sofa::析构函数" << endl;
    }

    void show()
    {
        cout << "leight=" << *leight << endl;
    }
};

class BedSofa:public Bed,public Sofa
{
private:
    double *height;
public:
    BedSofa(){cout << "BedSofa::无参构造函数" << endl;}

    BedSofa(double money,double leight,double height):Bed(money),Sofa(leight),height(new double(height))
    {
        cout << "BedSofa::有参构造函数" << endl;
    }

    BedSofa(const BedSofa &other):Bed(other),Sofa(other),height(new double(*(other.height)))
    {
        cout << "BedSofa::拷贝构造函数" << endl;
    }

    BedSofa &operator=(const BedSofa &other)
    {
        if(this != &other){
            height = new double(*(other.height));
            Bed::operator=(other);
            Sofa::operator=(other);
        }
        cout << "BedSofa::拷贝赋值函数" << endl;
        return *this;
    }

    ~BedSofa()
    {
        delete(height);
        height = nullptr;
        cout << "BedSofa::析构函数" << endl;
    }

    void show()
    {
        cout << "height=" << *height << endl;
    }
};

int main()
{
    BedSofa s1(120,4,0.5);
    s1.Bed::show();
    s1.Sofa::show();
    s1.show();
    return 0;
}

运行结果:

思维导图:

http://www.dtcms.com/a/5090.html

相关文章:

  • 洛谷P1049装箱问题 ————递归+剪枝+回溯
  • 安卓密码框、EditText
  • nginx反向代理到aws S3 ,解决S3返回500、502、503错误
  • Vue3中定义变量是选择ref还是reactive?
  • Redis SDS 源码
  • 开启三层交换机DHCP服务
  • Golang数据类型(字符串)
  • 剑指 Offer(第2版)面试题 18:删除链表的节点
  • [组合数学]LeetCode:2954:统计感冒序列的数目
  • 三、DVP摄像头调试笔记(图片成像质量微调整,非ISP)
  • JavaScript 基础
  • 深入理解指针3
  • 软著项目推荐 深度学习的水果识别 opencv python
  • Hadoop学习笔记(HDP)-Part.14 安装YARN+MR
  • Python自动化——driver.switch_to的用法
  • 免费数据采集软件,多种数据采集方式
  • 混音编曲软件tudio One 6.5.1 保姆级安装教程
  • CopyOnWriteArrayList怎么用
  • Javafx实现浏览器
  • 【UGUI】sprite精灵的创建与编辑
  • 【LeetCode刷题笔记】103. 二叉树的锯齿形层序遍历
  • 基于ssm vue的风景文化管理平台源码和论文
  • Scrum敏捷开发流程及支撑工具
  • 计数问题(数位DP)
  • C/C++内存管理
  • 【软件测试】技术精选:Jmeter常见的几种报错
  • IDEA2023版本创建Sping项目只能勾选17和21,却无法使用Java8?(已解决)
  • qt使用qproperty在css中设置自定义的qobject类属性
  • 微服务保护
  • 【电子取证篇】汽车取证数据提取与汽车取证实例浅析(附标准下载)