实例:
/*搭建一个货币的场景,创建一个名为 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 ostream &operator<<(ostream &cout, const RMB &r);
private:
int yuan;
int jiao;
int fen;
static int count;
public:
RMB() {}
RMB(int yuan,int jiao,int fen):yuan(yuan),jiao(jiao),fen(fen){count++;}//构造函数
const RMB operator+(const RMB &R)const{//类相加
RMB temp;
int total=yuan*100+jiao*10+fen+R.yuan*100+R.jiao*10+R.fen;
temp.yuan=total/100;
temp.jiao=total/10%10;
temp.fen=total%10;
return temp;
}
bool operator>(const RMB &R)const{//类比较大小
if((yuan*100+jiao*10+fen)>(R.yuan*100+R.jiao*10+R.fen)){
return true;
}else{
return false;
}
}
RMB &operator--(){//类的前置--
--yuan;
--jiao;
--fen;
return *this;
}
const RMB operator--(int){//类的后置--
RMB temp;
int total=yuan*100+jiao*10+fen-100-10-1;
temp.yuan=total/100;
temp.jiao=total/10%10;
temp.fen=total%10;
return temp;
}
~RMB(){count--;}//析构函数
};
int RMB::count=0;
ostream &operator<<(ostream &cout, const RMB &r)
{
cout << r.yuan << "元 " << r.jiao<< "角 " <<r.fen<<"分"<< endl;
return cout;
}
int main()
{
RMB R1(7,7,7);
RMB R2(1,2,3);
cout<<"R1: "<<R1<<endl<<"R2: "<<R2<<endl<<" R1 + R2 = "<<R1+R2<<endl<<" R1-- = "<<R1--<<endl<<" --R2 = "<<--R2<<endl;
return 0;
}
运行结果: