类与对象应用相关问题 求解

实习 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,实现复数相加和复数乘积计算。
优化了代码的可读性和可维护性。