6月7号作业

1,

搭建一个货币的场景,创建一个名为 RMB 的类,该类具有整型私有成员变量 yuan(元)、jiao(角)和 fen(分),并且具有以下功能:

(1)重载算术运算符 + 和 -,使得可以对两个 RMB 对象进行加法和减法运算,并返回一个新的 RMB 对象作为结果。

(2)重载关系运算符 >,判断一个 RMB 对象是否大于另一个 RMB 对象,并返回 true 或 false。

(3)重载前置减减运算符 --,使得每次调用时 RMB 对象的 yuan、jiao 和 fen 分别减 1

(4)重载后置减减运算符 --,使得每次调用时 RMB 对象的 yuan、jiao 和 fen 分别减 1

(5)另外, RMB 类还包含一个静态整型成员变量 count,用于记录当前已创建的 RMB 对象的数量。每当创建一个新的 RMB 对象时,count 应该自增 1;每当销毁一个 RMB 对象时,count 应该自减 1。

要求,需要在main 函数中测试上述RMB 类的功能。

#include <iostream>
using namespace std;
//搭建一个货币市场,创建一个类
class RMB
{
    //全局函数加上友元要在类里面声明;
    friend const RMB operator+(const RMB &L,const RMB &H);
    friend const RMB operator-(const RMB &L,const RMB &H);
    friend bool operator>(const RMB &L,const RMB &H);
    friend RMB &operator--(RMB &O);
    friend RMB operator--(RMB &O,int);
private:
    int first;
    int angle;
    int minute;
    static int count;
public:
    //无参
    RMB()
    {
        //cout << "无参构造" << endl;
        count++;
    }
    //有参
    RMB(int first,int angle,int minute):first(first),angle(angle),minute(minute)
    {
        //cout << "有参构造" << endl;
        count++;
    }
    //拷贝构造函数
    RMB(const RMB &other):first(other.first),angle(other.angle),minute(other.minute)
    {
        cout << "RMB=浅拷贝构造函数" << endl;
        count++;
    }
    //析构函数
    ~RMB()
    {
        //cout << "析构函数" << endl;
        count--;
    }
    //设置一个静态成员函数,获取
    static int acquirt()
    {
        return count;
    }


    //输出数据成员
    void show()
    {
        cout << "first元= " << first << endl;
        cout << "angle角= " << angle << endl;
        cout << "minute分= " << minute << endl;
    }


};
//全局函数实现+号运算重载
const RMB operator+(const RMB &L,const RMB &H)
{
    RMB temp;
    temp.first=L.first+H.first;
    temp.angle=L.angle+H.angle;
    temp.minute=L.minute+H.minute;
    return temp;
}
//全局函数实现-号运算重载
const RMB operator-(const RMB &L,const RMB &H)
{
    RMB temp;
    temp.first=L.first-H.first;
    temp.angle=L.angle-H.angle;
    temp.minute=L.minute-H.minute;
    return temp;
}
//全局函数实现关系运算重载
bool operator>(const RMB &L,const RMB &H)
{
    if(L.first > H.first && L.angle > H.angle && L.minute > H.minute)
    {
        return true;
    }
    else {
        return false;
    }
}
//全局前置自减运算
RMB &operator--(RMB &O)
{
    --O.first;
    --O.angle;
    --O.minute;
    return O;
}
//全局后置自减运算
RMB operator--(RMB &O,int)
{
    RMB temp;
    temp.first=O.first--;
    temp.angle=O.angle--;
    temp.minute=O.minute--;
    return temp;
}

//静态数据成员初始化
int RMB::count=0;

int main()
{
    //测试数据
    RMB s1(300,30,3);
    RMB s2(200,20,2);
    cout << "<=========================>" << endl;
    //全局加法运算
    RMB s3=s1+s2;
    s3.show();
    cout << "<=========================>" << endl;
    //全局减法运算
    RMB s4=s3-s2;
    s4.show();
    cout << "<=========================>" << endl;
    //全局关系运算重载
    if(s1>s2)
    {
        cout << "s1>s2" << endl;
    }
    cout << "<=========================>" << endl;
    //全局前置--运算重载
    RMB s5(8,8,8);
    s4=--s5;
    s5.show();
    s4.show();
    cout << "<=========================>" << endl;
    //全局后置--运算重载
    s4=s5--;
    s5.show();
    s4.show();
    cout << "静态变量功能测试" << endl;
    cout << "现存的RMB的对象" << RMB::acquirt() << endl;
    RMB* s6=new RMB(600,60,6);
    cout << "现存的RMB的对象" << RMB::acquirt() << endl;
    delete s6;
    cout << "现存的RMB的对象" << RMB::acquirt() << endl;


    return 0;
}

思维导图

相关推荐

  1. 假期作业 26

    2024-06-11 08:02:03       28 阅读
  2. 寒假作业26

    2024-06-11 08:02:03       32 阅读
  3. 617

    2024-06-11 08:02:03       10 阅读
  4. 28作业

    2024-06-11 08:02:03       26 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-11 08:02:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-11 08:02:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-11 08:02:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-11 08:02:03       18 阅读

热门阅读

  1. 工作的心得

    2024-06-11 08:02:03       10 阅读
  2. Eigen 库介绍,Ubuntu22 下安装 Eigen

    2024-06-11 08:02:03       10 阅读
  3. three.js使用环境贴图或者加载hdr图

    2024-06-11 08:02:03       10 阅读
  4. 深入理解梯度下降:优化算法的心脏

    2024-06-11 08:02:03       11 阅读
  5. l ; 提示上次输入的sql 内容 如果去掉; sqlplus

    2024-06-11 08:02:03       10 阅读
  6. MFC 教程-文本框失去焦点处理

    2024-06-11 08:02:03       10 阅读
  7. Ubuntu20.04配置qwen0.5B记录

    2024-06-11 08:02:03       14 阅读