Complex类的实现

实验要求:

定义一个复数类Complex,使得下面的代码能够工作:

Complex c1(3,5);     //用复数3+5i初始化c1;

Compex c2=4.5;      //用实数4.5初始化c2

c1.add(c2);              //将c1与c2相加,结果保存在1中

c1.show();               //将c1输出(这时的结果应该是7.5+5i)


 

 1 #include<iostream>
 2 #include<cmath>
 3 using namespace std;
 4 class Complex{
 5     public:
 6         Complex(float real1,float imaginary1=0)//赋默认值 
 7         {
 8             real=real1;
 9             imaginary=imaginary1;
10         }
11         void add(Complex &t)//两个复数相加 
12         {
13             real=real+t.real;
14             imaginary=imaginary+t.imaginary; 
15         }
16         void show()//打印复数 
17         {
18             cout<<real<<"+"<<imaginary<<"i"<<endl;
19         }
20         float mod()//计算复数的模 
21         {
22             float m;
23             m=sqrt(real*real+imaginary*imaginary);
24             return m;
25         }
26         Complex(Complex &c);//复制构造函数
27         private:
28             float real;
29             float imaginary;
30 }; 
31 Complex::Complex(Complex &c)//复制构造函数的实现 
32 {
33     real=c.real;
34     imaginary=c.imaginary;
35 }
36 int main()
37 {
38     Complex c1(3,5);
39     cout<<"该复数c1的值为:"; 
40     c1.show();
41     Complex c2(4.5);//检验默认初始值 
42     cout<<"复数c2的值为:"; 
43     c2.show();
44     Complex c3(c1);//将c1的值赋给c3,复制构造函数 
45     cout<<"复数c3的值为:" ; 
46     c3.show();
47     c1.add(c2);//检验复数相加
48     cout<<"c3与c1相加赋给c1,此时c1为:"; 
49     c1.show();
50     cout<<"同时c1的模变为:" ; 
51     cout<<c1.mod();
52     return 0;
53 }

 


 实验结果:

 

实验结论:

对于类的实验,题目中赋值的格式存在问题,在题目中complex c2=4.5在devc中会报错,错误如下:

这样赋值会产生歧义,而改成complex c2(4.5),可以避免上类情况,使用“=”只能对于含有一个变量的值赋值,而complex中定义了real和imaginary两个变量,所以无法按照题目方式赋值。

 

 

互评地址:

https://www.cnblogs.com/wmy0621/

https://www.cnblogs.com/zxz2425405395/

https://www.cnblogs.com/mzx1999/

 

posted @ 2019-03-30 19:59  DADABud  阅读(692)  评论(0编辑  收藏  举报