关于运算符重载的问题
为了清楚说明我的问题,先把程序贴出来
#include <iostream.h>
class RMB
{
public:
RMB(unsigned int d,unsigned int c);
RMB(double d);
friend RMB operator +(RMB&,RMB&);//非成员形式
friend RMB& operator ++(RMB&);//非成员形式
void display()
{
cout<<(yuan + jf/100.0)<<endl;
}
protected:
unsigned int yuan;
unsigned int jf;
};
RMB::RMB(unsigned int d, unsigned int c)
{
yuan =d;
jf=c;
while (jf>=100)
{
yuan++;
jf-=100;
}
}
RMB::RMB(double d)
{
yuan =(int)d;
jf=(int)((d-yuan)*100+0.5);
}
RMB operator+(RMB& s,RMB &t)
{
unsigned int yuan =t.yuan + s.yuan;
unsigned int jf =t.jf+s.jf;
RMB result(yuan,jf);
return result;
}
RMB& operator++(RMB& s)
{
s.jf++;
if(s.jf>=100)
{
s.jf-=100;
s.yuan ++;
}
return s;
}
void main()
{
RMB d1(1,60);
RMB d2(0,0);
d2=RMB(1.58)+d1;//必须显式转换??????
d2.display();
d2=d1+RMB(1.585);//必须显式转换?????
d2.display();
d2=1+2.4;//可以,相当于 d2=RMB(3.5);
d2.display();
}