返回信息流书上的一个例子,大牛们解释下r3=r1+2.40;
这句话的运行过程吧,我理解的是首先将对象r1强制转换为double类型,然后与2.40进行运算,问题是结果3.41又是通过何种机制从double型转换会RMB类型的呢? 还是有点搞不懂?
#include<iostream>
using namespace std;
class RMB
{public:
RMB(double value=0.0)
{
yuan=value;
fen=(value-yuan)*100+0.5;
//cout<<yuan<<endl;
//cout<<fen<<endl;
}
void ShowRMB()
{
cout<<yuan<<"元"<<fen<<"分"<<endl;
}
operator double()
{
return yuan+fen/100.0;
}
private:
int yuan,fen;
};
void main()
{
RMB r1(1.01),r2(2.20);
RMB r3;
r3=RMB((double)r1+(double)r2);
r3.ShowRMB();
r3=r1+2.40;
r3.ShowRMB();
r3=2.0-r1;
r3.ShowRMB();
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #18269同步于 2009/1/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
转换运算符重载
tsunami
2009/1/1镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
RMB(double value=0.0)
{
yuan=value;
fen=(value-yuan)*100+0.5;
//cout<<yuan<<endl;
//cout<<fen<<endl;
}
因为存在这个构造函数,可以把double类型隐式转换成RMB。
RMB(double value=0.0)
{
yuan=value;
fen=(value-yuan)*100+0.5;
//cout<<yuan<<endl;
//cout<<fen<<endl;
}
【 在 tsunami (风之子) 的大作中提到: 】
: 书上的一个例子,大牛们解释下r3=r1+2.40;
: 这句话的运行过程吧,我理解的是首先将对象r1强制转换为double类型,然后与2.40进行运算,问题是结果3.41又是通过何种机制从double型转换会RMB类型的呢? 还是有点搞不懂?
: #include<iostream>
: ...................