2. 定义RMB类,数据成员有yuan、jf,请为该类定义构造函数、并重载“+”、“-”、“<<”、“>>”,运行效果如下图所示。
时间: 2024-06-16 21:07:43 浏览: 110
构造函数重载
RMB类的定义如下:
```cpp
#include <iostream>
using namespace std;
class RMB {
private:
int yuan; // 元
int jf; // 角分
public:
// 构造函数
RMB(int y = 0, int j = 0) : yuan(y), jf(j) {}
// 重载加法运算符
RMB operator+(const RMB& r) const {
int totalJF = jf + r.jf;
int carry = totalJF / 100; // 进位
int sumYuan = yuan + r.yuan + carry;
int sumJF = totalJF % 100;
return RMB(sumYuan, sumJF);
}
// 重载减法运算符
RMB operator-(const RMB& r) const {
int totalJF = jf - r.jf;
int borrow = 0;
if (totalJF < 0) {
totalJF += 100;
borrow = 1; // 借位
}
int diffYuan = yuan - r.yuan - borrow;
int diffJF = totalJF;
return RMB(diffYuan, diffJF);
}
// 重载输出运算符
friend ostream& operator<<(ostream& os, const RMB& r) {
os << "人民币:" << r.yuan << "元" << r.jf << "角";
return os;
}
// 重载输入运算符
friend istream& operator>>(istream& is, RMB& r) {
cout << "请输入人民币的金额(元 角):";
is >> r.yuan >> r.jf;
return is;
}
};
```
使用示例:
```cpp
int main() {
RMB r1, r2, r3;
cout << "请输入第一个人民币的金额:" << endl;
cin >> r1;
cout << "请输入第二个人民币的金额:" << endl;
cin >> r2;
r3 = r1 + r2;
cout << "两个人民币的和为:" << r3 << endl;
r3 = r1 - r2;
cout << "两个人民币的差为:" << r3 << endl;
return 0;
}
```
阅读全文