实习 2 中的复数类还很不完善,请按照下面定义和要求完善复数类。
⚫ 将 Complex 类中的 getReal、getImage、getDistance、output 定义为常成
员函数。要求构造函数通过初始化列表进行初始化。
⚫ 添加常成员函数 add,实现复数相加计算,计算结果返回一个新的复数
对象,返回类型为 Complex。
⚫ 添加常成员函数 multiply,实现复数乘积计算,计算结果返回一个新的
复数对象,返回类型为 Complex。
#include <iostream>
using namespace std;
class Complex{
public:
Complex();
Complex(double r);
Complex(double r, double i);
void setValue(double r, double i);
double getReal() const ;
double getImage() const;
double getDistance() const;
void output() const;
Complex add(const Complex& c)const;
Complex multiply(const Complex& c)const;
private:
double real;
double image;
};
给出新增或修改成员函数的定义:
优化了代码:
#include <iostream>
#include <cmath>
class Complex {
public:
Complex() : real(0), image(0) {} // 默认构造函数
Complex(double r) : real(r), image(0) {} // 实部为 r 的构造函数
Complex(double r, double i) : real(r), image(i) {} // 实部为 r,虚部为 i 的构造函数
// 常成员函数
double getReal() const { return real; }
double getImage() const { return image; }
double getDistance() const { return std::sqrt(real * real + image * image); }
void output() const { std::cout << '(' << real << ',' << image << ')' << std::endl; }
// 复数相加
Complex add(const Complex& c) const {
return Complex(real + c.real, image + c.image);
}
// 复数乘积
Complex multiply(const Complex& c) const {
return Complex(real * c.real - image * c.image, real * c.image + image * c.real);
}
private:
double real; // 实部
double image; // 虚部
};
修改说明:
将构造函数改为使用初始化列表进行初始化。
将 getReal、getImage、getDistance、output 定义为常成员函数。
添加常成员函数 add 和 multiply,实现复数相加和复数乘积计算。
优化了代码的可读性和可维护性。