Complex类的设计与改进-LMLPHP

Complex类

源码

#include <cmath>
#include <iomanip>
#include <iostream>
#include <string> using namespace std; class Complex
{
private:
double real, imaginary; public:
Complex(double r = 0.0, double i = 0.0) : real(r), imaginary(i){};
Complex(const Complex &c);
void add(const Complex m);
void show();
double mod();
}; Complex::Complex(const Complex &c)
{
real = c.real;
imaginary = c.imaginary;
} void Complex::add(const Complex m)
{
real += m.real;
imaginary += m.imaginary;
} void Complex::show()
{
cout << real << std::showpos << imaginary << "i" << std::noshowpos << endl;
} double Complex::mod()
{
return sqrt(real * real + imaginary * imaginary);
} int main()
{
Complex c1(3, 5);
Complex c2 = 4.5;
Complex c3(c1);
c1.add(c2);
c1.show();
cout << c1.mod();
return 0;
}

运行截图

Complex类的设计与改进-LMLPHP

按照要求写出的Comloex类有点问题,add函数的设计不合理。

改进

源码

#include <cmath>
#include <iomanip>
#include <iostream>
#include <string> using namespace std; class Complex
{
private:
double real, imaginary; public:
Complex(double r = 0.0, double i = 0.0) : real(r), imaginary(i){};
Complex(const Complex &c);
Complex add(const Complex m);
void show();
double mod();
}; Complex::Complex(const Complex &c)
{
real = c.real;
imaginary = c.imaginary;
} Complex Complex::add(const Complex m)
{
Complex a;
a.real = real+m.real;
a.imaginary = imaginary+m.imaginary;
return a;
} void Complex::show()
{
cout << real << std::showpos << imaginary << "i" << std::noshowpos << endl;
} double Complex::mod()
{
return sqrt(real * real + imaginary * imaginary);
} int main()
{
Complex c1(3, 5);
Complex c2 = 4.5;
Complex c3(c1);
c1 = c1.add(c2);
c1.show();
cout << c1.mod();
cin.get();
return 0;
}

像这样把结果return回来才比较好。

感想

05-11 20:12