编程实现一个计算人民币加减运算的程序,包含对人民币中的圆,角,分的计算。能正确的将分,角进位到元。要求必须使用面向对象编程的方法编程,使用类和运算符重载的知识。必须进行加减法和赋值两种运算。谢?~
不能执,改成行#include出现这个错误warning C4172: returning address of local variable or temporary,但能执行,不过运行结果是错的
追答把引用去掉:
#include
class Money
{
public:
Money(int pYuan=0, int pJiao=0, int pFen=0);
Money operator + (Money& money);
Money operator-(Money& money); //也可以用友元函数实现
void operator=(Money& money); //赋值运算符只能作为成员函数,而不能做友元函数
friend ostream& operatoryuan + money.yuan;
jiao = this->jiao + money.jiao;
fen = this->fen + money.fen;
if(fen >= 10)
{
jiao += 1;
fen -= 10;
}
if(jiao >= 10)
{
yuan += 1;
jiao -= 10;
}
return Money(yuan, jiao, fen);
}
Money Money::operator-(Money& money)
{
int yuan;
int jiao;
int fen;
fen = this->fen - money.fen;
if(fen jiao -= 1;
fen += 10;
}
jiao = this->jiao - money.jiao;
if(jiao yuan -= 1;
jiao += 10;
}
yuan = this->yuan - money.yuan;
return Money(yuan, jiao, fen);
}
void Money::operator=(Money& money)
{
yuan = money.yuan;
jiao = money.jiao;
fen = money.fen;
}
ostream& operator<<(ostream& output,Money& money)
{
output<<money.yuan<<"元"<<money.jiao<<"角"<<money.fen<<"分"<<endl;
return output;
}
void main()
{
Money money1(3,6,4);
Money money2(1,7,9);
Money money3;
Money money4;
Money money5;
money3=money1+money2;
money4=money1-money2;
money5=money4;
cout<<money3;
cout<<money4;
cout<<money5;
}