1. 程式人生 > >sdut 4-1 復數類的運算符重載

sdut 4-1 復數類的運算符重載

turn clu data per pub opera 方便 演示 掌握

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 復數類的運算符重載