做宣传海报网站,建设银行网站链接,狼雨seo教程的网上店铺,注册做网站的营业执照思维导图 搭建一个货币的场景#xff0c;创建一个名为 RMB 的类#xff0c;该类具有整型私有成员变量 yuan#xff08;元#xff09;、jiao#xff08;角#xff09;和 fen#xff08;分#xff09;#xff0c;并且具有以下功能#xff1a;
(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 iostreamusing namespace std;class RMB
{friend bool operator (const RMB l,const RMB r);friend istream operator(istream cin, RMB r);friend void compare(const RMB l,const RMB r);friend RMB operator (RMB u);friend const RMB operator --(RMB u,int);private:int yuan;int jiao;int fen;string name;static int count;public://无参构造函数RMB(){count;}//有参构造函数初始化用户名以及操作金额RMB(int yuan,int jiao,int fen,string name):yuan(yuan),jiao(jiao),fen(fen),name(name){cout用户name加入endl操作金额yuan元jiao角fen分endlendl;count;}//析构函数~RMB(){count--;}//展示余额void show(){cout用户nameendl余额yuan元jiao角fen分endlendl;}//成员函数执行加操作const RMB operator (const RMB r)const{RMB temp;temp.namename;couttemp.name执行操作endlendl;temp.yuanyuanr.yuan;temp.jiaojiaor.jiao;temp.fenfenr.fen;//判断进位if(temp.fen10){temp.fen-10;temp.jiao1;}if(temp.jiao10){temp.jiao-10;temp.yuan1;}return temp;}//成员函数执行减操作const RMB operator- (const RMB r)const{RMB temp;temp.namename;couttemp.name执行-操作endlendl;temp.yuanyuan-r.yuan;temp.jiaojiao-r.jiao;temp.fenfen-r.fen;//判断借位if(temp.fen0){temp.fen10;temp.jiao-1;}if(temp.jiao0){temp.jiao10;temp.yuan-1;}if(temp.yuan0){cout余额不足endl;}return temp;}
};
//初始化静态变量count
int RMB::count0;
//全局函数实现提取符重载
istream operator(istream cin, RMB u)
{cin u.yuanu.jiaou.fenu.name;cout用户u.nameendl操作金额u.yuan元u.jiao角u.fen分endlendl;return cin;
}
//全局函数执行判断‘’操作
bool operator (const RMB l,const RMB r){coutl.name与r.name执行操作endlendl;if(l.yuanr.yuan){return true;}else if(l.yuanr.yuan){if(l.jiaor.jiao){return true;}else if(l.jiaor.jiao){if(l.fenr.fen){return true;}else{return false;}}else if(l.jiaor.jiao){return false;}}else if(l.yuanr.yuan){return false;}return 1;//防止出现无返回值的情况}
//定义一个函数专门用来提示比较结果
void compare(const RMB l,const RMB r){if(lr){coutl.namer.nameendlendl;}else{coutl.namer.nameendlendl;}}
//全局函数实现前运算符重载
RMB operator (RMB u){coutu.name执行前操作endlendl;u.yuan1;u.jiao1;u.fen1;if(u.fen10){u.fen-10;u.jiao1;}if(u.jiao10){u.jiao-10;u.yuan1;}return u;}
//全局函数实现后--运算符重载
const RMB operator --(RMB u,int){coutu.name执行后--操作endlendl;RMB temp;temp.yuanu.yuan--;temp.jiaou.jiao--;temp.fenu.fen--;if(u.fen0){u.fen10;u.jiao-1;}if(u.jiao0){u.jiao10;u.yuan-1;}if(u.yuan0){cout余额不足endl;}return temp;}
int main(){RMB user1(10,8,9,蔡徐坤);RMB add;cinadd;RMB updateuser1;updateuser1user1add;updateuser1.show();RMB sub;cinsub;updateuser1updateuser1-sub;updateuser1.show();RMB user2(8,6,9,马嘉祺);compare(updateuser1,user2);user2;user2.show();RMB user3user2--;user3.show();user2.show();return 0;}