#include <iostream>
using namespace std;
class RMB {
private:
int yuan;
int jiao;
int fen;
static int count;
public:
RMB(int y = 0, int j = 0, int f = 0) : yuan(y), jiao(j), fen(f) { count++; }
~RMB() { count--; }
const RMB operator+(const RMB& rmb) const;
const RMB operator-(const RMB& rmb) const;
bool operator<(const RMB& rmb) const;
bool operator>(const RMB& rmb) const;
bool operator==(const RMB& rmb) const;
bool operator>=(const RMB& rmb) const;
bool operator<=(const RMB& rmb) const;
bool operator!=(const RMB& rmb) const;
RMB& operator++();
const RMB operator++(int);
RMB& operator--();
const RMB operator--(int);
static void printRMBInstanceCount() { cout << count << endl; }
friend ostream& operator<<(ostream& os, const RMB& rmb) {
os << "yuan: " << rmb.yuan << " jiao: " << rmb.jiao << " fen: " << rmb.fen;
return os;
}
};
int RMB::count = 0;
const RMB RMB::operator+(const RMB& rmb) const {
return RMB(yuan + rmb.yuan, jiao + rmb.jiao, fen + rmb.fen);
}
const RMB RMB::operator-(const RMB& rmb) const {
return RMB(yuan - rmb.yuan, jiao - rmb.jiao, fen - rmb.fen);
}
bool RMB::operator<(const RMB& rmb) const {
int cvt2fen_1 = 100 * yuan + 10 * jiao + fen;
int cvt2fen_2 = 100 * rmb.yuan + 10 * rmb.jiao + rmb.fen;
return cvt2fen_1 < cvt2fen_2;
}
bool RMB::operator>(const RMB& rmb) const {
int cvt2fen_1 = 100 * yuan + 10 * jiao + fen;
int cvt2fen_2 = 100 * rmb.yuan + 10 * rmb.jiao + rmb.fen;
return cvt2fen_1 > cvt2fen_2;
}
bool RMB::operator==(const RMB& rmb) const {
int cvt2fen_1 = 100 * yuan + 10 * jiao + fen;
int cvt2fen_2 = 100 * rmb.yuan + 10 * rmb.jiao + rmb.fen;
return cvt2fen_1 == cvt2fen_2;
}
bool RMB::operator>=(const RMB& rmb) const {
return !operator<(rmb);
}
bool RMB::operator<=(const RMB& rmb) const {
return !operator>(rmb);
}
bool RMB::operator!=(const RMB& rmb) const {
return !operator==(rmb);
}
RMB& RMB::operator++() {
yuan++;
jiao++;
fen++;
return *this;
}
const RMB RMB::operator++(int) {
return RMB(yuan++, jiao++, fen++);
}
RMB& RMB::operator--() {
yuan--;
jiao--;
fen--;
return *this;
}
const RMB RMB::operator--(int) {
return RMB(yuan--, jiao--, fen--);
}
int main() {
RMB::printRMBInstanceCount();
RMB a;
RMB b(2, 2, 2);
RMB* c = new RMB;
RMB::printRMBInstanceCount();
cout << b - a << endl;
cout << b + a << endl;
cout << b-- << endl;
cout << --b << endl;
delete c;
RMB::printRMBInstanceCount();
}
6.8 思维导图
最新推荐文章于 2025-04-30 19:58:04 发布