3 RMB类要求:定义一个RMB类Money,包含元 角分三个数据成员,友元函数重载运算?

如题所述

第1个回答  2023-05-15
好的,下面是一个简单的RMB类Money的定义和友元函数重载运算符的实现:
```c++
#include <iostream>
using namespace std;
class Money {
private:
int yuan; // 元
int jiao; // 角
int fen; // 分
public:
Money(int y = 0, int j = 0, int f = 0): yuan(y), jiao(j), fen(f) {}
friend ostream& operator<<(ostream& os, const Money& m); // 友元函数,重载输出运算符
friend Money operator+(const Money& m1, const Money& m2); // 友元函数,重载加法运算符
};
ostream& operator<<(ostream& os, const Money& m) {
os << "金额为" << m.yuan << "元" << m.jiao << "角" << m.fen << "分";
return os;
}
Money operator+(const Money& m1, const Money& m2) {
int sum_fen = (m1.fen + m2.fen) % 10;
int carry_jiao = (m1.fen + m2.fen) / 10;
int sum_jiao = (m1.jiao + m2.jiao + carry_jiao) % 10;
int carry_yuan = (m1.jiao + m2.jiao + carry_jiao) / 10;
int sum_yuan = m1.yuan + m2.yuan + carry_yuan;
return Money(sum_yuan, sum_jiao, sum_fen);
}
int main() {
Money m1(5, 8, 9); // 5元8角9分
Money m2(3, 6, 7); // 3元6角7分
Money m3 = m1 + m2; // 金额相加
cout << m1 << endl;
cout << m2 << endl;
cout << m3 << endl;
return 0;
}
```
上述代码中,我们定义了一个RMB类Money,包含三个数据成员:元、角、分。同时,我们还重载了输出运算符`<<`和加法运算符`+`。
在友元函数`operator<<`中,我们使用了流输出语句将该对象的元、角、分输出到屏幕上。
在友元函数`operator+`中,我们首先计算两个对象的分数之和,并通过进位的方式计算出总的角数和元数。然后,我们返回一个新的Money对象,其元、角、分的值即为计算得出的总元、角、分。
最后,在主函数中,我们分别创建了两个Money对象m1和m2,并通过重载的加法运算符将两个对象加起来得到一个新的Money对象m3,最终将这三个对象的信息输出到屏幕上。

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网