嵌入式学习记录6.10

一.思维导图

二.练习

搭建一个货币的场景,创建一个名为 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{
private:
    int yuan;//元
    int jiao;//角
    int fen;//分
    friend const Rmb operator+(const Rmb &L,const Rmb &R);
    friend const Rmb operator-(const Rmb &L,const Rmb &R);
    friend bool operator>(const Rmb &L, const Rmb &R);
    friend Rmb &operator--(Rmb &O);
    friend const Rmb operator--(Rmb &O, int);
    static int count;
public:
    Rmb(){ }
    Rmb(int yuan,int jiao,int fen):yuan(yuan),jiao(jiao),fen(fen){
         ++count; // 在带参数的构造函数中增加计数
    }
    ~Rmb() {
            --count; // 在析构函数中减少计数
        }
    // 获取当前RMB对象数量
       static int getCount() {
           return count;
       }
};
const Rmb operator+(const Rmb &L,const Rmb &R){//重载+
    Rmb temp;
    temp.yuan=L.yuan+R.yuan;
    temp.jiao=L.jiao+R.jiao;
    temp.fen=L.fen+R.fen;
    return temp;
}
const Rmb operator-(const Rmb &L,const Rmb &R){//重载-
    Rmb temp;
    temp.yuan=L.yuan-R.yuan;
    temp.jiao=L.jiao-R.jiao;
    temp.fen=L.fen-R.fen;
    return temp;
}
bool operator>(const Rmb &L, const Rmb &R)//重载>
{
    if(L.yuan > R.yuan && L.jiao> R.jiao && L.fen>R.fen)
    {
        return true;
    }
    else
    {
        return false;
    }
}
//全局 函数实现 前-- 运算符重载
Rmb &operator--(Rmb &O)
{
    --O.yuan;
    --O.jiao;
    --O.fen;
    return O;
}


//全局函数实现 后-- 运算符重载
const Rmb operator--(Rmb &O, int)
{
    Rmb temp;
    temp.yuan= O.yuan--;
    temp.fen= O.fen--;
    temp.jiao=O.jiao--;
    return temp;
}

//初始化
int Rmb:: count=0;

int main()
{

            Rmb rmb1(1, 2, 3);
            cout << "RMB对象数量: " << Rmb::getCount() << endl; // 输出1
            {
                Rmb rmb2(4, 5, 6);
                cout << "RMB对象数量: " << Rmb::getCount() << endl; // 输出2
            } // rmb2 销毁
            cout << "RMB对象数量: " << Rmb::getCount() << endl; // 输出1

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值