A simple Complex class

本文介绍了一个简单的复数类,包含复数的基本四则运算。特别地,当被除复数的实部和虚部均为零时,将输出-nan。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个简单的复数类,包含基本的复数四则运算。
如果被除复数的实部和虚部都为零。会输出 -nan
如有遗漏,欢迎留言补充

class Complex
{
private:
    double real;
    double imag;
public:
    Complex()
    {
        real = 0;
        imag = 0;
    }
    Complex(double a, double b)
    {
        real = a;
        imag = b;
    }
    void set_real(double num)
    {
        real = num;
    }
    void set_imag(double num)
    {
        imag = num;
    }
    double get_real()
    {
        return real;
    }
    double get_imag()
    {
        return imag;
    }
    friend Complex operator + (Complex first, Complex second);
    friend Complex operator - (Complex first, Complex second);
    friend Complex operator * (Complex first, Complex second);
    friend Complex operator / (Complex first, Complex second);
    friend void operator += (Complex &first, Complex second);
    friend void operator -= (Complex &first, Complex second);
    friend void operator *= (Complex &first, Complex second);
    friend void operator /= (Complex &first, Complex second);
};
Complex operator + (Complex first, Complex second)
{
    double r = first.real + second.real;
    double i = first.imag + second.imag;
    return Complex(r, i);
}
Complex operator - (Complex first, Complex second)
{
    double r = first.real - second.real;
    double i = first.imag - second.imag;
    return Complex(r, i);
}
Complex operator * (Complex first, Complex second)
{
    //r=ac-bd
    double r = first.real*second.real - first.imag*second.imag;
    //i=bc+ad
    double i = first.real*second.imag + first.imag*second.real;
    return Complex(r, i);
}
Complex operator / (Complex first, Complex second)
{
    //r=(ac+bd)/(c*c+d*d)
    double r = (first.real*second.real + first.imag*second.imag) / (second.real*second.real + second.imag*second.imag);
    //i=(bc-ad)/(c*c+d*d)
    double i = (first.imag*second.real - first.real*second.imag) / (second.real*second.real + second.imag*second.imag);
    return Complex(r, i);
}
void operator += (Complex &first, Complex second)
{
    first = first + second;
}
void operator -= (Complex &first, Complex second)
{
    first = first - second;
}
void operator *= (Complex &first, Complex second)
{
    first = first*second;
}
void operator /= (Complex &first, Complex second)
{
    first = first / second;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值