使用运算符重载实现复数的加法运算

在使用运算符重载之前先使用成员函数实现复数相加的算法为:

#include <iostream>

using namespace std;

class Complex//复数类   
{
public:
    //定义默认构造函数初始化数据成员
    Complex()
    {
        real = 0;
        imag = 0;
    }

    //定义初始化表初始化Complex类
    Complex(double r, double i):real(r),imag(i){}
    
    //声明成员函数,实现复数相加
    Complex complex_add(Complex &c1);   
    
    void display( );//显示复数

private:
      double real;//复数的实部
      double imag;//复数的虚部
};

//实现复数相加
Complex Complex::complex_add(Complex &c1)  
{  
    Complex c2;  
    
    c2.real = c1.real + real;  
    c2.imag = c1.imag + imag;  
    
    return c2;  
}  

void Complex::display( )//显示复数
{
    cout<<real<<'+'<<imag<<'i'<<endl;
}

int main( )
{
    Complex  c1(8,2), c2(7,10), c3;

    cout<<"c1 = ";
    c1.display();
    
    cout<<"c2 = ";
    c2.display();

    //执行两个复数相加
    c3 = c1.complex_add(c2);
    
    cout<<"c1 + c2 = ";
    c3.display();

    system("pause");
}


执行结果:


使用运算符重载实现两个复数相加

#include <iostream>

using namespace std;

class Complex//复数类   
{
public:
    //定义默认构造函数初始化数据成员
    Complex()
    {
        real = 0;
        imag = 0;
    }

    //定义初始化表初始化Complex类
    Complex(double r, double i):real(r),imag(i){}
    
    //声明重载运算符函数(实现两个复数相加)
    Complex operator+(Complex &c1);   
    
    void display( );//显示复数

private:
      double real;//复数的实部
      double imag;//复数的虚部
};

//定义重载运算符函数实现复数相加
Complex Complex::operator+(Complex &c1)  
{  
    Complex c2;  
    
    c2.real = c1.real + real;  
    c2.imag = c1.imag + imag;  
    
    return c2;  
}  

void Complex::display( )//显示复数
{
    cout<<real<<'+'<<imag<<'i'<<endl;
}

int main( )
{
    Complex  c1(8,2), c2(7,10), c3;

    cout<<"c1 = ";
    c1.display();
    
    cout<<"c2 = ";
    c2.display();

    //使用运算符重载实现两个复数相加
    c3 = c1 + c2;
    
    cout<<"c1 + c2 = ";
    c3.display();

    system("pause");
}


执行结果:


算法分析:

上面的两段代码都实现了两个复数相加

处理复数相加部分的代码基本一样唯一的不同就是函数的声明和定义不同

使用类中的对象函数声明为: Complex complex_add(Complex &c1);  

使用运算符重载的形式声明为:  Complex operator+(Complex &c1);  

通过上面两个形式可知普通的成员函数的声明方式为:   typename  f() 

运算符重载函数声明的形式是:   返回值的类型    operator 运算符  函数名(参数)

类中成员函数定义的形式:返回值得类型  类名  :: 成员函数名(参数)

运算符重载函数定义的形式:返回值的类型  类名 ::  operator  运算符   成员函数名(参数)


在主函数中需要调用成员函数才能执行复数相加的运算: c3 = c1.complex_add(c2)

而使用运算符重载可以直接:  c3 = c1 + c2


使用重载函数更容易明白


  • 16
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值