鱼C论坛

 找回密码
 立即注册
查看: 3724|回复: 2

关于重载操作符!编译不通过?

[复制链接]
发表于 2013-6-1 15:26:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include<iostream>
  2. #include<stdlib.h>
  3. class Rational
  4. {
  5. public:
  6. Rational(int num, int denom);
  7. Rational operator+(Rational rhs);
  8. Rational operator-(Rational rhs);
  9. Rational operator*(Rational rhs);
  10. Rational operator/(Rational rhs);

  11. private:
  12. void normalize();
  13. int num;
  14. int denom;

  15. friend std::ostream& operator<<(std::ostream os,Rational f);
  16. };

  17. Rational::Rational(int num,int denom)
  18. {
  19. this->num=num;
  20. this->denom=denom;
  21. normalize();
  22. }

  23. void Rational::normalize()
  24. {
  25. if(denom<0)
  26. {
  27. num=-num;
  28. denom=-denom;
  29. }
  30. //欧几里得算法求最大公约数
  31. int a=abs(num);
  32. int b=abs(denom);
  33. while(b>0)
  34. {
  35. int t=a%b;
  36. a=b;
  37. b=t;
  38. }
  39. num=num/a;
  40. denom=num/a;
  41. }

  42. Rational Rational::operator+(Rational rhs)
  43. {
  44. int a=num;
  45. int b=denom;
  46. int c=rhs.num;
  47. int d=rhs.denom;
  48. int e=a*b+c*d;
  49. int f=b*d;
  50. return Rational(e,f);
  51. }

  52. Rational Rational::operator-(Rational rhs)
  53. {
  54. rhs.num=-rhs.num;
  55. return operator+(rhs);
  56. }

  57. Rational Rational::operator*(Rational rhs)
  58. {
  59. int a=num;
  60. int b=denom;
  61. int c=rhs.num;
  62. int d=rhs.denom;
  63. int e=a*b;
  64. int f=c*d;
  65. return Rational(e,f);
  66. }

  67. Rational Rational::operator/(Rational rhs)
  68. {
  69. int t=rhs.num;
  70. rhs.num=rhs.denom;
  71. rhs.denom=t;
  72. return operator*(rhs);
  73. }


  74. std::ostream& operator<<(std::ostream os,Rational f);

  75. int main()
  76. {
  77. Rational f1(2,16);
  78. Rational f2(7,8);
  79. std::cout<<"="<<(f1+f2)<<std::endl;
  80. std::cout<<"="<<(f1-f2)<<std::endl;
  81. std::cout<<"="<<(f1*f2)<<std::endl;
  82. std::cout<<"="<<(f1/f2)<<std::endl;
  83. return (0);
  84. }

  85. std::ostream& operator<<(std::ostream os,Rational f)
  86. {
  87. os<<f.num<<"/"<<f.denom;
  88. return os;
  89. }
复制代码

哪位大神看看问题出哪儿了?先谢过
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-3 14:52:07 | 显示全部楼层
顶一顶!!!!!!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-8 15:00:48 | 显示全部楼层
来大神帮忙看下吧~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-27 10:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表