实现复数类+友元函数

本文详细描述了如何在C++中实现一个复数类,包括定义数据成员(实部和虚部)、构造函数(默认值为0)、show函数以打印复数形式,以及成员函数和友元函数用于执行复数的加减运算。示例代码展示了如何创建复数对象并进行基本运算。
摘要由CSDN通过智能技术生成

题目2:实现复数类,具体要求如下:
(1)数据成员包含实部real与虚部image;
(2)构造函数:给复数的数据成员赋初值。如果不给任何初始值,则默认实部real=虚部image=0;
(3)设计成员函数和友元函数实现复数的加减运算。
主函数

int main()
{
    Complex c1(2, 1), c2(6, -2), c3(-2, -1);
    cout<<"c1= ";
    c1.show();
    cout<<"c2= ";
    c2.show();
    cout<<"c3= ";
    c3.show();
    Complex c4 = c1.Add(c2);
    cout<<"c4 = c1+c2 = ";
    c4.show();
    Complex c5 = c1.Sub(c2);
    cout<<"c5 = c1-c2 = ";
    c5.show();
    cout<<"c6 = c1+c3 = ";
    Complex c6 = Add_two_c(c1, c3);
    c6.show();
    cout<<"c7 = c6-c3 = ";
    Complex c7 = Sub_two_c(c6, c3);
    c7.show();
    return 0;
}

解题思路:
首先定义一个Complex的类,该类有两个私有成员变量real和image,分别表示复数的实部和虚部,接着定义了一个构造函数,它接受两个参数,如果没有提供参数,则默认值为0。接着写出用show函数打印复数的值,分实部和虚部多种情况考虑,接着用成员函数Add和Sub函数分别计算两个复数的和与差,接着声明友元函数Add_two_c和Sub_two_c实现加法和减法。
代码:

#include <iostream>
using namespace std;
class Complex
{
private:
    double real;
    double image;
public:
    Complex(double r = 0,double i = 0)
    :real(r),image(i){}
    void show()const
    {
        if(real == 0 && image == 0)
        {
            cout<<0<<endl;
        }
        else if(real != 0 && image == 0)
        {
            cout<<real<<endl;
        }
        else if(real == 0 && image != 0)
        {
            if(image == 1)
            {
                cout<<"i"<<endl;
            }
            else if(image == -1)
            {
                cout<<"-"<<"i"<<endl;
            }
            else
            {
                cout<<image<<"i"<<endl;
            }
        }
        else if(real != 0 && image != 0)
        {
           if(image < 0)
           {
               if(image == -1)
               {
                   cout<<real<<"-"<<"i"<<endl;
               }
               else
               {
                   cout<<real<<image<<"i"<<endl;
               }
           }
           else if(image > 0)
           {
               if(image == 1)
               {
                   cout<<real<<"+"<<"i"<<endl;
               }
               else
               {
                   cout<<real<<"+"<<image<<"i"<<endl;
               }
           }
        }
    }
    Complex Add(const Complex& other)const
    {
        return Complex(real + other.real,image + other.image);
    }
    Complex Sub(const Complex& other)const
    {
        return Complex(real - other.real,image - other.image);
    }
    friend Complex Add_two_c(const Complex& a, const Complex& b);
    friend Complex Sub_two_c(const Complex& a, const Complex& b);
};
Complex Add_two_c(const Complex& a, const Complex& b) {
    return Complex(a.real + b.real, a.image + b.image);
}
Complex Sub_two_c(const Complex& a, const Complex& b) {
    return Complex(a.real - b.real, a.image - b.image);
}
int main()
{
    Complex c1(2, 1), c2(6, -2), c3(-2, -1);
    cout<<"c1= ";
    c1.show();
    cout<<"c2= ";
    c2.show();
    cout<<"c3= ";
    c3.show();
    Complex c4 = c1.Add(c2);
    cout<<"c4 = c1+c2 = ";
    c4.show();
    Complex c5 = c1.Sub(c2);
    cout<<"c5 = c1-c2 = ";
    c5.show();
    cout<<"c6 = c1+c3 = ";
    Complex c6 = Add_two_c(c1, c3);
    c6.show();
    cout<<"c7 = c6-c3 = ";
    Complex c7 = Sub_two_c(c6, c3);
    c7.show();
    return 0;
}

运行结果截图:
在这里插入图片描述

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值