思维导图:
代码:
#include <iostream>
using namespace std;
//声明RMB类
class Rmb{
private:
//声明RMB类中的成员变量
int yuan;
int jiao;
int fen;
static int count;
public:
//RMB类的无参构造方法
Rmb(){
//cout << "Rmb::无参构造函数" << endl;
countAdd();
}
//RMB类的有参构造方法
Rmb(int yuan, int jiao, int fen):yuan(yuan), jiao(jiao), fen(fen){
//cout << "Rmb::有参构造函数" << endl;
countAdd();
}
//显示对象信息的函数
void show(){
cout << "金额为:" << yuan << "元" << jiao << "角" << fen << "分" << endl;
}
//count自增函数
static void countAdd(){
count++;
}
//创建函数实现获取count值的功能
static int getCount(){
return count;
}
//重载加法运算符,实现两个对象对应成员相加
const Rmb operator+(const Rmb &r)const{
Rmb t;
t.yuan = yuan + r.yuan;
t.jiao = jiao + r.jiao;
t.fen = fen + r.fen;
return t;
}
//重载减法运算符,实现两个对象对应成员相减
const Rmb operator-(const Rmb &r)const{
Rmb t;
t.yuan = yuan - r.yuan;
t.jiao = jiao - r.jiao;
t.fen = fen - r.fen;
return t;
}
//成员函数实现前--运算符重载
Rmb &operator--(){
--yuan;
--jiao;
--fen;
return *this;
}
//成员函数实现后--运算符重载
const Rmb operator--(int){
Rmb t;
t.yuan = yuan--;
t.jiao = jiao--;
t.fen = fen--;
return t;
}
};
int Rmb::count = 0;
int main()
{
Rmb r1(1000, 5, 3);
r1.show();
Rmb r2;
r2 = r1--;
Rmb r3 = --r1;
r2.show();
r3.show();
Rmb r4 = r1 + r2;
Rmb r5 = r2 - r1;
r4.show();
r5.show();
cout << "有" << r1.getCount() << "个对象" << endl;
return 0;
}
运行结果: