设计、定义并实现Complex类
设计、定义并实现Complex类
1 #include <iostream> 2 #include <cmath> 3 using namespace std; 4 class MyComplex 5 { 6 public: 7 MyComplex(double aa=0,double bb=0); 8 MyComplex(MyComplex &pp); 9 void add(MyComplex tt); 10 void show(); 11 double qumo(); 12 private: 13 double reality; 14 double imaginary; 15 }; 16 MyComplex::MyComplex(double aa,double bb) 17 { 18 reality=aa; 19 imaginary=bb; 20 } 21 MyComplex::MyComplex(MyComplex &pp) 22 { 23 reality=pp.reality; 24 imaginary=pp.imaginary; 25 } 26 void MyComplex::add(MyComplex tt) 27 { 28 reality+=tt.reality; 29 imaginary+=tt.imaginary; 30 } 31 void MyComplex::show() 32 { 33 cout<<reality<<"+"<<imaginary<<"i"<<endl; 34 } 35 double MyComplex::qumo() 36 { 37 double mo; 38 mo=sqrt(reality*reality+imaginary*imaginary); 39 return mo; 40 } 41 int main () 42 { 43 double result; 44 MyComplex c1(3,5); 45 MyComplex c2(4.5); 46 MyComplex c3(c1); 47 c1.add(c2); 48 c1.show(); 49 result=c3.qumo(); 50 cout<<result<<endl; 51 return 0; 52 }
输出结果为复数c1和c2的和,以及c3的模数。
由于这个类里的加法函数和常规习惯有出入,所以修改为下面的重载函数形式:
1 #include <iostream> 2 #include <cmath> 3 using namespace std; 4 class MyComplex 5 { 6 public: 7 MyComplex(double aa=0,double bb=0); 8 MyComplex(MyComplex &pp); 9 void add(MyComplex tt,MyComplex rr); 10 void add(MyComplex tt); 11 void show(); 12 double qumo(); 13 private: 14 double reality; 15 double imaginary; 16 }; 17 MyComplex::MyComplex(double aa,double bb) 18 { 19 reality=aa; 20 imaginary=bb; 21 } 22 MyComplex::MyComplex(MyComplex &pp) 23 { 24 reality=pp.reality; 25 imaginary=pp.imaginary; 26 } 27 void MyComplex::add(MyComplex tt,MyComplex rr) 28 { 29 reality=tt.reality+rr.reality; 30 imaginary=tt.imaginary+rr.imaginary; 31 } 32 void MyComplex::add(MyComplex tt) 33 { 34 reality+=tt.reality; 35 imaginary+=tt.imaginary; 36 } 37 void MyComplex::show() 38 { 39 cout<<reality<<"+"<<imaginary<<"i"<<endl; 40 } 41 double MyComplex::qumo() 42 { 43 double mo; 44 mo=sqrt(reality*reality+imaginary*imaginary); 45 return mo; 46 } 47 int main () 48 { 49 double result; 50 MyComplex c1(3,5); 51 MyComplex c2(4.5); 52 MyComplex c3(c1); 53 MyComplex c4; 54 c4.add(c1,c2); 55 c1.add(c2); 56 c4.show(); 57 c1.show(); 58 result=c3.qumo(); 59 cout<<result<<endl; 60 return 0; 61 }
一种是把结果保存在加数c1中,另一种是保存在另一个复数对象c4中。
实验总结:
(1)当要求的操作方式可以改进时可以尝试进行改进。
(2)成员函数的形参个数 是否需要默认形参值 是否需要返回值 返回值类型 都需要结合函数的作用适当选择。