複數類的運算子過載加號和減號基礎

2021-10-02 10:33:30 字數 2213 閱讀 7631

一、過載運算子的目的:實現複數類物件之間直接進行運算,像基本資料型別一樣。

二、運算子過載實質:編寫以運算子作為名稱的函式。

三、如何寫:

返回值型別 operator運算子(形參表)

注:運算子可以被多次過載。運算子可以過載為全域性函式,也可以過載為類的成員函式。過載為成員函式時,運算子左邊通常是乙個物件,this指標指向該物件。

四、複數類加減**。

#include

using namespace std;

//目的:實現物件之間的加減運算

class complex

complex operator-

(const complex& b)

;//減號左邊物件的成員函式,兩個複數物件相減

complex operator-

(double r)

;//減號左邊物件的成員函式,複數-實數

friend complex operator-

(double r,

const complex& a)

;//實數-複試

friend complex operator+

(const complex& a,

const complex& b)

;//兩個複數物件相加

complex operator+

(const complex& b)

;//多次過載 複數+複數

complex operator+

(double r)

;//加號左邊的物件的成員函式,複數+實數

friend complex operator+

(double r,

const complex& a)

;//實數+複數

complex& operator=

(const complex& a)

;//左值物件的成員函式,過載賦值運算子

void

myprint()

;};//1.用類的成員函式實現運算子過載時,乙個物件作為this實現呼叫成員函式,另乙個物件作為引數

complex complex:

:operator-

(const complex& b)

complex complex:

:operator-

(double r)

//實數-複數

//減號左邊是乙個實數,無法過載為成員函式,用友元過載為全域性函式

complex operator-

(double r,

const complex& a)

//2.用全域性函式實現運算子過載時,兩個物件對應兩個引數

complex operator+

(const complex& a,

const complex& b)

complex complex:

:operator+

(const complex& b)

complex complex:

:operator+

(double r)

complex operator+

(double r,

const complex& a)

void complex:

:myprint()

complex& complex:

:operator=

(const complex& a)

void

testadd()

void

testsub()

void

testass()

intmain()

五、輸出結果:

六、總結:

1.賦值運算子只能過載為類的成員函式。

2.過載為全域性函式時,函式引數個數等於運算子的運算元個數;過載為成員函式時,函式引數個數等於運算子的運算元個數減一。

3.對於全域性函式,訪問類的私有成員函式必須使用宣告為類的友元函式。

4、可以被過載的運算子如下:

運算子過載 複數類

1.普通運算子可以過載 2.型別過載1 防止實參被修改 2 接收隱式生成臨時物件 類內是this call的呼叫約定,成員方法隱藏this指標,指向一般為左運算元,所以只用傳右運算元即可 如下 class ccomplex 構造類內實現 的過載 右運算元型別為intconst ccomplex op...

複數類運算子過載

includeusing namespace std class complex complex operator complex co 過載 號,實現複數相加 complex operator complex co 過載 號,實現複數相減 complex operator complex co 過...

複數類的運算子過載

include using namespace std class complex 建構函式 complex complex const double real 0.0,const double image 0.0 拷貝建構函式 complex complex const complex c rea...