| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 502 人关注过本帖
标题:关于运算符重载的问题
只看楼主 加入收藏
animeo
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-10-2
收藏
 问题点数:0 回复次数:0 
关于运算符重载的问题

小弟在书上看到如下程序:
#include<iostream.h>
#include<math.h>
class Money{
float Dollars;
float Cents;
public:
Money(){Dollars=Cents=0;}
Money(float,float);
Money(float);
Money operator++();
Money operator++(int);
float GetAmount(float*);
~Money(){}
void Show(){cout<<Dollars<<'\t'<<Cents<<'\n';}
};
Money::Money(float n)
{
float Frac,num;
Frac=modff(n,&num);
Cents=Frac*100;
Dollars=num;
}
Money::Money(float d,float c)
{
float sum,dd,cc;
sum=d+c/100;
cc=modff(sum,&dd);
Dollars=dd;
Cents=cc*100;
}
Money Money::operator++()
{
Cents++;
if(Cents>=100){
Dollars++;
Cents-=100;
}
return*this;
}
Money Money::operator++(int)
{
Money t=*this;
Cents++;
if(Cents>=100){
Dollars++;
Cents-=100;
}
return t;
}
float Money::GetAmount(float*n)
{
*n=Dollars;
return Cents;
}
void main(void)
{
Money m1(25,50),m2(105.7),m3(1002.25,200.35);
Money c,d;
float e1,f1,e2,f2;
m1.Show();
c=++m1;
d=m1++;
c.Show();d.Show();
c=++m2;
d=m2++;
c.Show();d.Show();
e1=m2.GetAmount(&f1);
e2=m3.GetAmount(&f2);
cout<<f1+f2<<"yuan"<<'\t'<<e1+e2<<"fen"<<'\n';
}

为什么这个输出是这样啊:
25 50
25 51
25 51
105 70.9997
105 70.9997
1109yuan 97.3476fen

(主要是最后三组数据)

搜索更多相关主题的帖子: 重载 运算符 
2007-10-08 18:09
快速回复:关于运算符重载的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013952 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved