|
//例子 : /** * 操作符重載*/ #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);//計算利息 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); } }; 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; } 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 重程序易讀性上考慮,操作符重載盡量不要悖棄操作符的本意
|