首页 > 代码库 > sdut 4-1 复数类的运算符重载

sdut 4-1 复数类的运算符重载

4-1 复数类的运算符重载

Time Limit: 1000MS Memory limit: 65536K

题目描述

通过本题目的练习可以掌握成员运算符重载及友元运算符重载

要求定义一个复数类,重载加法和减法运算符以适应对复数运算的要求,重载插入运算符(<<)以方便输出一个复数的要求。

输入

 

要求在主函数中创建对象时初始化对象的值。

输出

 

输出数据共有4行,分别代表ab的值和它们求和、求差后的值

示例输入

示例输出

a=3.2+4.5i
b=8.9+5.6i
a+b=12.1+10.1i
a-b=-5.7-1.1i

提示

 

来源

#include <iostream>

using namespace std;

class Complex//定义Complex类
{
private:
    double real;
    double imag;

public:
    Complex()//默认为0
    {
        real=0;
        imag=0;
    }
    Complex(double a,double b)//赋值函数
    {
        real=a;
        imag=b;
    }

    Complex operator+(Complex &c);//声明重载运算符“+”
    Complex operator-(Complex &c);//声明重载运算符“-”
    friend ostream& operator <<(ostream &,Complex&);//声明运算符“<<”重载为友元函数
};

Complex Complex :: operator+(Complex &c)//定义重载运算符“+”函数
{
    Complex d;
    d.real=real+c.real;
    d.imag=imag+c.imag;
    return d;
}

Complex Complex :: operator-(Complex &c)//定义重载运算符“-”函数
{
    Complex d;
    d.real=real-c.real;
    d.imag=imag-c.imag;
    return d;
}

ostream &operator <<(ostream &output,Complex&c)//定义运算符“<<”重载函数
{
    output<<c.real;
    if(c.imag>=0)output<<"+";
    output<<c.imag<<"i";
    return output;
}

int main()
{
    Complex a(3.2,4.5),b(8.9,5.6);
    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;
    Complex c;
    c=a+b;//运算符+用于复数运算
    cout<<"a+b="<<c<<endl;
    c=a-b;//运算符-用于复数运算
    cout<<"a-b="<<c<<endl;
    return 0;
}


sdut 4-1 复数类的运算符重载