C++编程题 定义一个金钱类Money,其中数据成员包括元,角和分的值,函数

C++编程题定义一个金钱类Money,其中数据成员包括元,角和分的值,函数成员包括构造函数,打印函数等,并重载了+号运算符。请用成员函数重载+号运算符,实现金钱值的相加功... C++编程题
定义一个金钱类Money,其中数据成员包括元,角和分的值,函数成员包括构造函数,打印函数等,并重载了+号运算符。请用成员函数重载+号运算符,实现金钱值的相加功能。如对象m1的值是1元2角3分,m2的值是2元3角4分,则m1+m2所得到的对象值则应是3元5角7分。
展开
 我来答
百度网友bb29ad2
2016-06-14 · TA获得超过2271个赞
知道小有建树答主
回答量:890
采纳率:33%
帮助的人:216万
展开全部
#include <iostream>
using namespace std;

class Money
{
private:
int m_nYuan;
int m_nJiao;
int m_nFen;
public:
Money() :m_nYuan(0), m_nJiao(0), m_nFen(0){}
Money(int nYuan, int nJiao, int nFen) :
m_nYuan(nYuan),
m_nJiao(nJiao),
m_nFen(nFen)
{
Money::CheckData(*this);
}
void Print()
{
cout << m_nYuan << "元" << m_nJiao << "角" << m_nFen << "分" << endl;
}
Money operator + (const Money& rM)
{
Money m;
m.m_nFen = this->m_nFen + rM.m_nFen;
m.m_nYuan = this->m_nYuan + rM.m_nYuan;
m.m_nJiao = this->m_nJiao + rM.m_nJiao;
Money::CheckData(m);
return m;
}

// 分最多为9,角最多为9,超过了就进位
static void CheckData(Money& money)
{
if (money.m_nFen >= 10)
{
money.m_nJiao += money.m_nFen / 10;
money.m_nFen = money.m_nFen % 10;
}
if (money.m_nJiao >= 10)
{
money.m_nYuan += money.m_nJiao / 10;
money.m_nJiao = money.m_nJiao % 10;
}
}
};

int main()
{
Money m1(1, 9, 3), m2(2, 3, 11);
Money m3;
m3 = m1 + m2;
m3.Print();
return 0;
}


朋友,请【采纳答案】,您的采纳是我答题的动力,如果没有明白,请追问。谢谢。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式