#include <iostream>
using namespace std;
class RMB
{
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);
private:
int yuan;
int jiao;
int fen;
static int count;
public:
RMB()
{
++count;
cout << "RMB::无参构造函数" << endl;
}
RMB(int yuan,int jiao,int fen):yuan(yuan),jiao(jiao),fen(fen)
{
cout << "RMB::有参构造函数" << endl;
}
~RMB()
{
--count;
}
void show()
{
cout << "元" << yuan << "角" << jiao << "分" << fen << endl;
}
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.jiao = O.jiao--;
temp.fen = O.fen--;
return temp;
}
int RMB::count = 0;
int main()
{
RMB rmb1(10, 5, 2), rmb2(1, 1, 1);
RMB SUM = rmb1 + rmb2;
SUM.show();
RMB DIF = rmb1 - rmb2;
DIF.show();
if (rmb1 > rmb2) {
std::cout << "rmb1 is greater than rmb2" << std::endl;
}
--rmb1;
rmb1.show();
rmb1--;
rmb1.show();
std::cout << "Total RMB objects created: " << RMB::getCount() << std::endl;
return 0;
}
10-07
9万+
01-02
09-22
26万+
12-01
2367
05-28