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

书籍源码

开发平台:

Visual C++

  1. //【例4.8_2】与静态数据成员相反,为使用方便,静态函数成员多为公有的。
  2. //在例4.8中的复数类中的函数成员print(),被说明为静态函数成员
  3. #include <iostream>
  4. #include <cmath>
  5. using namespace std;
  6. class Complex{
  7. double Real,Image ;
  8. public:
  9.     Complex(double r=0.0, double i=0.0){Real=r;Image=i;}//定义构造函数
  10.     Complex(Complex &com){
  11. Real=com.Real ; Image=com.Image ;
  12. }//定义拷贝构造函数
  13. static void  Print(Complex & ob);
  14. Complex  operator+(Complex);
  15. Complex  operator+(double);
  16. Complex  operator=(Complex);
  17. Complex  operator+=(Complex);
  18. double  abs(void);
  19. Complex  operator*(Complex);
  20. Complex  operator/(Complex);
  21. };
  22. Complex  Complex::operator+(Complex c){
  23. Complex  Temp(Real+c.Real , Image+c.Image) ; //显式说明局部对象
  24.   return Temp ;
  25. }
  26. Complex Complex::operator+(double d){    
  27. return Complex(Real+d , Image) ;//隐式说明局部对象
  28. }
  29. Complex Complex::operator+=(Complex c){
  30. Complex temp;
  31. temp.Real=Real+c.Real;
  32. temp.Image=Image+c.Image;
  33. Real=temp.Real;
  34. Image=temp.Image;
  35. return temp;
  36. }
  37. Complex Complex::operator=(Complex c){
  38. Complex temp;
  39. temp.Real=c.Real;
  40. temp.Image=c.Image;
  41. Real=temp.Real;
  42. Image=temp.Image;
  43. return temp;
  44. }
  45. double Complex::abs(void){
  46. return sqrt(Real*Real+Image*Image);
  47. }
  48. Complex Complex::operator*(Complex c){
  49. return Complex(Real*c.Real-Image*c.Image , Real*c.Image+c.Real*Image);
  50. }
  51. Complex Complex::operator/(Complex c){
  52. double d=c.Real*c.Real+c.Image*c.Image ;
  53. return Complex((Real*c.Real+Image*c.Image)/d , (Image*c.Real-Real*c.Image)/d) ;
  54. }
  55. void  Complex::Print(Complex & ob){
  56. cout<<"Real="<<ob.Real<<'t'<<"Image="<<ob.Image<<'n';
  57. }
  58. int main(void){
  59. Complex c1(1.0,1.0) , c2(2.0,2.0) , c3(4.0,4.0) , c;
  60. double d=0.5;
  61. Complex::Print(c1);
  62. c=c2+c3;
  63. Complex::Print(c);
  64. c+=c1;
  65. Complex::Print(c);
  66. c=c+d;
  67. Complex::Print(c);
  68. c=c3*c2;
  69. c.Print(c);//这里c.只是表示Print属于Complex类,用c,c1,c2,c3均可,也可理解为Print可属于任一个对象
  70. c=c3/c1;
  71. c1.Print(c);
  72. cout<<"c3的模为:"<<c3.abs()<<endl;
  73. return 0;
  74. }