设计、定义并实现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)成员函数的形参个数 是否需要默认形参值 是否需要返回值 返回值类型 都需要结合函数的作用适当选择。

posted @ 2019-03-29 22:22  knight04  阅读(179)  评论(0编辑  收藏  举报
Live2D