标题:运算符重载
只看楼主
zhanghang123
Rank: 2
等 级:论坛游民
帖 子:39
专家分:24
注 册:2010-3-20
结帖率:100%
已结贴  问题点数:10 回复次数:12 
运算符重载
#include<iostream.h>

class RMB{           //人民币类
public:
  RMB(double d){ yuan=d; jf=(d-yuan)/100; }
  RMB interest(double rate);          //计算利息
  RMB add(RMB d);                     //人民币加
  void display(){ cout <<(yuan + jf / 100.0) << endl; }
  RMB operator+(RMB d){ return RMB(yuan+d.yuan+(jf+d.jf)/100); }
                                      //人民币加的运算符重载
  RMB operator*(double rate){ return RMB((yuan+jf/100)*rate);}
private:
  unsigned int yuan;                  //元
  unsigned int jf;                    //角分
};

RMB RMB::interest(double rate)
{
  return RMB((yuan + jf / 100.0) * rate);
}
RMB RMB::add(RMB d)
{
  return RMB(yuan + d.yuan + jf / 100.0 + d.jf / 100.0);
}

//以下是计算应付人民币的两个版本
RMB expense1(RMB principle, double rate)
{
  RMB interest = principle.interest(rate);
  return principle.add(interest);
}

RMB expense2(RMB principle, double rate)
{
  RMB interest = principle * rate;    //本金乘利息
  return principle + interest;        //连本带利
}

void main()
{
  RMB x = 10000.0;
  double yrate = 0.035;
  expense1(x,yrate).display();
  expense2(x,yrate).display();
}
运行结果:
10350
10350
在上述程序中,输出结果为何不是double型的?
搜索更多相关主题的帖子: 运算符 重载 
2010-11-25 23:17
xanxus
Rank: 2
等 级:论坛游民
威 望:1
帖 子:21
专家分:60
注 册:2010-10-26
得分:1 
你元跟角分都定义为int型了啊

授人以鱼  不如授人以渔
2010-11-26 10:48
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
得分:0 
....
2010-11-26 11:59
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:4 
cout <<(float)(yuan + jf / 100.0) << endl;
强制转化一下  就ok啦~

                                         
===========深入<----------------->浅出============
2010-11-26 15:31
zhanghang123
Rank: 2
等 级:论坛游民
帖 子:39
专家分:24
注 册:2010-3-20
得分:0 
回复 2楼 xanxus
但cout <<(yuan + jf / 100.0) << endl中jf/100.0结果不应该是double型吗?
2010-11-26 23:34
zhanghang123
Rank: 2
等 级:论坛游民
帖 子:39
专家分:24
注 册:2010-3-20
得分:0 
回复 4楼 laoyang103
但源程序中没强制转化啊?int与double转化后也应该是double型啊
2010-11-26 23:37
xanxus
Rank: 2
等 级:论坛游民
威 望:1
帖 子:21
专家分:60
注 册:2010-10-26
得分:3 
回复 5楼 zhanghang123
怎么会是double型呢,像jf,你定义为int型,执行if/100语句的结果系统会把它判为int型的好不
举个例子
    int a;
    a=10;
    cout<<a/100<<endl;
LZ觉得结果是什么?
0.1?



结果是0

[ 本帖最后由 xanxus 于 2010-11-27 17:23 编辑 ]

授人以鱼  不如授人以渔
2010-11-27 17:21
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:1 
那你在转化一下不可以吗?

                                         
===========深入<----------------->浅出============
2010-11-27 18:24
zhanghang123
Rank: 2
等 级:论坛游民
帖 子:39
专家分:24
注 册:2010-3-20
得分:0 
回复 8楼 laoyang103
hehe,这是我在教材上看到的一个例子,不是我自己写的程序。
2010-11-27 23:15
zhanghang123
Rank: 2
等 级:论坛游民
帖 子:39
专家分:24
注 册:2010-3-20
得分:0 
回复 7楼 xanxus
jf/100.0,不是jf/100.
2010-11-27 23:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-326927-1-1.html




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

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