C++类练习(16)

#include <iostream> // 引入输入输出流库  
using namespace std; // 使用标准命名空间,以避免在每次调用标准库时都写std::  
  
// 定义一个名为complex的类,用于表示复数  
class complex  
{  
public:  
    // 默认构造函数,创建一个复数,其实部和虚部都为0  
    complex()  
    {  
        real = imag = 0;  
    }  
  
    // 带参数的构造函数,根据给定的实部和虚部创建一个复数  
    complex(double r, double i)  
    {  
        real = r;  
        imag = i;  
    }  
  
    // 重载+操作符,用于两个复数的加法  
    complex operator +(const complex &c);  
  
    // 重载-操作符,用于两个复数的减法  
    complex operator -(const complex &c);  
  
    // 重载*操作符,用于两个复数的乘法  
    complex operator *(const complex &c);  
  
    // 重载/操作符,用于两个复数的除法(注意:这里仅提供了基本的除法实现,没有考虑分母为0的情况)  
    complex operator /(const complex &c);  
  
    // 声明一个友元函数print,用于打印复数  
    friend void print(const complex &c);  
  
private:  
    // 私有成员变量,用于存储复数的实部和虚部  
    double real, imag;  
};  
  
// 实现+操作符的重载  
inline complex complex::operator +(const complex &c)  
{  
    // 创建一个新的复数对象,其实部和虚部为两个复数相加的结果  
    return complex(real + c.real, imag + c.imag);  
}  
  
// 实现-操作符的重载  
inline complex complex::operator -(const complex &c)   
{  
    // 创建一个新的复数对象,其实部和虚部为两个复数相减的结果  
    return complex(real - c.real, imag - c.imag);  
}  
  
// 实现*操作符的重载  
inline complex complex::operator *(const complex &c)  
{  
    // 根据复数乘法的规则创建一个新的复数对象  
    return complex(real * c.real - imag * c.imag, real * c.imag + imag * c.real);  
}  
  
// 实现/操作符的重载  
inline complex complex::operator /(const complex &c)  
{  
    // 根据复数除法的规则创建一个新的复数对象  
    // 注意:这里假设分母不为0,并且没有处理分母为0的情况  
    double denominator = c.real * c.real + c.imag * c.imag;  
    return complex((real * c.real + imag * c.imag) / denominator, (imag * c.real - real * c.imag) / denominator);  
}  
  
// 友元函数print的实现,用于打印复数  
void print(const complex &c)  
{  
    // 如果虚部小于0,则直接打印实部和虚部(不带+号)  
    if (c.imag < 0)  
        cout << c.real << c.imag << "i";  
    else   
        // 如果虚部大于等于0,则打印实部、+号和虚部  
        cout << c.real << "+" << c.imag << "i";  
}  
  
int main()  
{  
    // 创建两个复数对象c1和c2,并初始化它们的实部和虚部  
    complex c1(2.0, 3.0), c2(4.0, -2.0), c3;  
  
    // 使用+操作符将c1和c2相加,并将结果存储在c3中  
    c3 = c1 + c2;  
  
    // 调用print函数打印c3的值  
    print(c3);  
  
    return 0; // 主函数返回0,表示程序正常结束  
}

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值