Ex4_8.cpp
上传用户:wuzhousb
上传日期:2022-07-12
资源大小:380k
文件大小:2k
源码类别:

书籍源码

开发平台:

Visual C++

  1. //【例4.8】定义复数类,可完成复数基本运算,并应用它进行复数运算。
  2. #include <iostream>
  3. #include <cmath>
  4. using namespace std;
  5. class Complex{
  6. double Real,Image ;
  7. public:
  8.     Complex(double r=0.0, double i=0.0){Real=r;Image=i;}//定义构造函数
  9.     Complex(Complex &com){
  10. Real=com.Real ; Image=com.Image ;
  11. }//定义拷贝构造函数
  12. void  Print(){
  13. cout<<"Real="<<Real<<'t'<<"Image="<<Image<<'n';
  14. }
  15. Complex  operator+(Complex);
  16. Complex  operator+(double);
  17. Complex  operator=(Complex);
  18. Complex  operator+=(Complex);
  19. double  abs(void);
  20. Complex  operator*(Complex);
  21. Complex  operator/(Complex);
  22. };
  23. Complex  Complex::operator+(Complex c){
  24. Complex  Temp(Real+c.Real , Image+c.Image) ; //显式说明局部对象
  25.   return Temp ;
  26. }
  27. Complex Complex::operator+(double d){    
  28. return Complex(Real+d , Image) ;//隐式说明局部对象
  29. }
  30. Complex Complex::operator+=(Complex c){
  31. Complex temp;//定义temp为了可以返回Complex类型的值,使+=可以连续使用
  32. temp.Real=Real+c.Real;
  33. temp.Image=Image+c.Image;
  34. Real=temp.Real;
  35. Image=temp.Image;
  36. return temp;
  37. }
  38. Complex Complex::operator=(Complex c){
  39. Complex temp;//定义temp为了可以返回Complex类型的值,使=可以连续使用
  40. temp.Real=c.Real;
  41. temp.Image=c.Image;
  42. Real=temp.Real;
  43. Image=temp.Image;
  44. return temp;
  45. }
  46. double Complex::abs(void){
  47. return sqrt(Real*Real+Image*Image);
  48. }
  49. Complex Complex::operator*(Complex c){
  50. return Complex(Real*c.Real-Image*c.Image , Real*c.Image+c.Real*Image);
  51. }
  52. Complex Complex::operator/(Complex c){
  53. double d=c.Real*c.Real+c.Image*c.Image ;
  54. return Complex((Real*c.Real+Image*c.Image)/d , (Image*c.Real-Real*c.Image)/d) ;
  55. }
  56. int main(void){
  57. Complex c1(1.0,1.0) , c2(2.0,2.0) , c3(4.0,4.0) , c;
  58. double d=0.5 ;
  59. c1.Print();
  60. c=c2+c3;
  61. c.Print();
  62. c+=c1;
  63. c.Print();
  64. c=c+d;
  65. c.Print();
  66. c=c3*c2;
  67. c.Print();
  68. c=c3/c1;
  69. c.Print();
  70. cout<<"c3的模为:"<<c3.abs()<<endl;
  71. c=c3=c2=c1;
  72. c.Print();
  73. c+=c3+=c2+=c1;
  74. c.Print();
  75. return 0;
  76. }