第九周專案1 複數類中的運算子過載(續)

2021-07-02 13:08:59 字數 3094 閱讀 7003

問題及**:

/*

*檔名稱:project.cpp

*作 者:陳文青

*完成日期:2023年5月13日

*版 本 號:v1.0

**問題描述:(1)再定義一目運算子 -,-c相當於0-c。

(2)定義complex類中的《和》運算子的過載,實現輸入和輸出,改造原程式中對運算結果顯示方式,使程式讀起來更自然。

*程式輸入:

*程式輸出:

*/#include using namespace std;

class complex

complex(double r,double i)

//定義一目運算子 -,取反運算子

complex operator-();

//定義complex類中的《和》運算子的過載,實現輸入和輸出,改造原程式中對運算結果顯示方式

friend ostream& operator << (ostream& cout, const complex& c);

friend istream& operator >> (istream& cin, complex& c);

//運算子過載函式的宣告要考慮全面

friend complex operator+(const complex &c1,const complex &c2);

friend complex operator+(const complex &c1,double d2);

friend complex operator+(double d1,const complex &c2);

friend complex operator-(const complex &c1,const complex &c2);

friend complex operator-(const complex &c1,double d2);

friend complex operator-(double d1,const complex &c2);

friend complex operator*(const complex &c1,const complex &c2);

friend complex operator*(const complex &c1,double d2);

friend complex operator*(double d1,const complex &c2);

friend complex operator/(const complex &c1,const complex &c2);

friend complex operator/(const complex &c1,double d2);

friend complex operator/(double d1,const complex &c2);

private:

double real;

double imag;

}; //定義一目運算子 -,取反運算子

complex complex::operator-()

//輸出運算子的過載

ostream& operator << (ostream& cout, const complex& c)

while(!((ch=='+'||ch=='-')&&i=='i')); //格式正確,則跳出迴圈

c.real=a;

c.imag=(ch=='+')?b:-b; //為虛部賦正確的值

return cin;

} //下面為友元函式

complex operator+(const complex &c1,const complex &c2)

complex operator+(const complex &c1,double d2)

//如上個運算子過載函式,可以實部相加,虛數相加,也可以像這個過載函式,充分利用以前定義的函式,達到簡化目的

//或許加法運算看不清楚這樣做的方便性,但是在乘除法運算中,便可以充分體會到這樣做的好處

complex operator+(double d1,const complex &c2)

complex operator-(const complex &c1,const complex &c2)

complex operator-(const complex &c1,double d2)

complex operator-(double d1,const complex &c2)

//複數相乘:(a+bi)(c+di)=(ac-bd)+(bc+ad)i.

complex operator*(const complex &c1,const complex &c2)

complex operator*(const complex &c1,double d2)

complex operator*(double d1,const complex &c2)

//複數相除:(a+bi)/(c+di)=(ac+bd)/(c^2+d^2) +(bc-ad)/(c^2+d^2)i

complex operator/(const complex &c1,const complex &c2)

}complex operator/(const complex &c1,double d2)

complex operator/(double d1,const complex &c2)

//下面定義用於測試的main()函式,一定要全面

int main()

{ complex c1(1,2),c2(3,-1),c3;

cout

cout<

執行結果:

知識點總結:

複數類中的運算子過載。以及輸入輸出流的運算子過載

學習心得:

1.單目運算子的過載設定為成員函式

2.輸入輸出流的運算子過載不能設定為成員函式,因為作為成員函式進行的運算子過載的第乙個引數應該是當前類的物件,即*this指標。

3.定義好的過載運算子,在與其相關的運算子過載中,應該學會積極呼叫。

第九周 專案1 複數類中的運算子過載

問題及 專案1 複數類中的運算子過載 續 all right reserved 檔名 學生成績統計 作者 童宇 完成日期 2015 年 5 月 13 日 版本號v1.0 問題描述 1 再定義一目運算子 c相當於0 c。2 定義complex類中的 和 運算子的過載,實現輸入和輸出,改造原程式中對運算...

第九周 專案1 複數類中的運算子過載(續)

問題及 all right reserved,檔名 test.cpp 完成日期 2015年5月12日 版本號 v1.0 問題描述 再定義一目運算子 c相當於0 c。定義complex類中的 和 運算子的過載,實現輸入和輸出,改造原程式中對運算結果顯示方式,使程式讀起來更自然。輸入描述 程式輸出 in...

第九周專案1 複數類中的運算子過載(續)

檔名稱 test.cpp 完成日期 2015年 5月 13日 版本號 v1.0 問題描述 在複數類中的運算子過載基礎上 1 再定義一目運算子 c相當於0 c。2 定義complex類中的 和 運算子的過載,實現輸入和輸出,改造原程式中對運算結果顯示方式,使程式讀起來更自然。輸入描述 程式輸出 inc...