定义一个复数类Complex,使得以下代码能够工作。
Complex c1 (3,5); //用复数 3+5i 初始化 c1 Complex c2=4.5; //用实数 4.5 初始化 c2 c1.add (c2); //将 c1 与 c2 相加,结果保存在 c1 中 c1.show (); //将 c1 输出 (这时结果应该诗 7.5+5i)
1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 class Complex { 5 public : 6 Complex () { 7 real=0; 8 imaginary=0; 9 } 10 Complex (double real0=0,double imaginary0=0) { 11 real=real0; 12 imaginary=imaginary0; 13 } 14 void add (Complex a); 15 void show (); 16 double mod (); 17 private : 18 double real; 19 double imaginary; 20 }; 21 22 void Complex::add(Complex a) { 23 real += a.real; 24 imaginary += a.imaginary; 25 } 26 27 void Complex::show() { 28 if (imaginary!=0) 29 cout<<real<<"+"<<imaginary<<"i"<<endl; 30 else cout <<real<<endl; 31 } 32 33 double Complex::mod() { 34 return sqrt (real*real+imaginary*imaginary); 35 } 36 37 int main () { 38 Complex c1 (3,5); 39 Complex c2 = 4.5; 40 c2.show (); 41 c1.add (c2); 42 c1.show (); 43 cout << c1.mod() <<endl; 44 return 0; 45 }
现在是基本弄明白了构造函数的用法,原本对构造函数、复制构造函数之类的语句是不太会用的。
代码果然要自己去尝试才能比较容易发现问题,找出区别。我在这次作业里试了很多构造函数的不同格式,基本上只是格式换了一下语句之类的没有什么修改,之后有空的话会去调试一下老师之前发的一些代码找一下感觉,也顺便熟悉一下上课没仔细听的东西...