# Khan's Notebook GCC/GNU/Linux Delphi/Window Java/Anywhere

## c++ 操作符重载

//例子 :
/**
* 操作符重载*/
#include <iostream>

using namespace std;

class RMB{
private:
unsigned int yuan; //元
unsigned int jf; //角分
public:

RMB(double d){
yuan = static_cast<unsigned int> (d);
jf = static_cast<unsigned int> ((d-yuan)/100);
}

RMB interest(double rate);//计算利息
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);
}
};

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

return RMB(yuan + d.yuan + jf/100.0+ d.jf/100.0);
}

RMB expense1(RMB principle , double rate){
RMB interest= principle.interest(rate);
}

RMB expense2(RMB principle , double rate){
RMB interest = principle * rate;
return principle + interest;
}

int main(){
RMB x =10000.0;
double yrate=0.035;
expense1(x,yrate).display();
expense2(x,yrate).display();
return 1;
}

//以上代码在gcc mingw windows环境中编译通过

1 "." , "::" , ".*" , ".->" , "?:" 这5个操作符在c++标准中是不允许重载的,也不可以创造新的操作符
2 操作符在重载后运算优先级保持不变
3 重程序易读性上考虑,操作符重载尽量不要悖弃操作符的本意

posted on 2004-12-29 23:32 Khan 阅读(898) 评论(0)  编辑 收藏 引用 所属分类: GCC/G++

 只有注册用户登录后才能发表评论。 相关文章:
 < 2004年12月 >
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

• 随笔 - 171
• 文章 - 0
• 评论 - 257
• 引用 - 0

•

• 积分 - 439751
• 排名 - 48