当前位置: 首页 > 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;
}

运行结果:

思维导图:

相关文章:

  • 洛谷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精灵的创建与编辑
  • 美国和沙特签署上千亿美元军售协议
  • 排污染黑海水后用沙土覆盖黑泥?汕尾环保部门:非欲盖弥彰
  • 有关部门负责人就《新时代的中国国家安全》白皮书答记者问
  • 石家庄推动城市能级与民生福祉并进
  • 人民日报:浙江着力提升民营企业核心竞争力
  • 汇源果汁发文:经营情况一切正常