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

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.kler.cn/a/158007.html

相关文章:

  • Hive_Spark_left()函数
  • 数字营销竞争激烈,这是真的吗?
  • Java中的信号量(Semaphore)机制详解
  • PyQt6 QGroupBox分组框控件
  • 查看php进程占用内存
  • 阿里云新版公共实例从注册账号到创建设备生成参数教程
  • 第73讲:深入理解MySQL数据库InnoDB存储引擎:内存结构、磁盘结构与后台线程全面解析
  • 浪潮信息KeyarchOS——保卫数字未来的安全防御利器
  • Web漏洞分析-SQL注入XXE注入(中上)
  • 【每日易题】Leetcode上Hard难度的动态规划题目——地下城游戏的实现
  • 纹理烘焙:原理及实现
  • 2023-11-28-直播单细胞图表美化-seurat数据结构 featureplot dotplot vlnplot
  • #名词区别篇:事件流事件委托addEventListener白屏时间首屏时间
  • spring cloud gateway源码分析,一个请求进来的默认处理流程
  • 零基础入坑Python爬虫的全面学习指南
  • _____面试题_____(持续更新)
  • 11.10Redis基础
  • HTTP 和 HTTPS的区别
  • 通俗理解Jenkins是什么?
  • linux 应用层同步与互斥机制之条件变量