C 基礎(六)在物件中使用運算子 運算子過載

2021-08-14 15:00:35 字數 1666 閱讀 2227

c++語言允許程式設計師重新定義已有的運算子,使其能夠按使用者的要求完成一些特定的操作,這就是運算子過載。經過載後的運算子過載。經過載後的運算子能夠直接對使用者自定義的資料進行操作運算。本章介紹有運算子過載方面的內容。

c++語言為實現運算子過載提供了一種方法,即將運算子看作一種特殊型別的函式,運算子過載是通過對運算子的過載實現的。運算子函式名由關鍵字operator和過載的運算子組成。

過載運算子的函式一般格式如下:

函式型別 operator 運算子(形參列表)

過載運算子要遵循的規則:

1、c++語言允許過載的運算子表見表5-1,不允許過載的運算子見表5-2。

2、運算子過載是針對新型別資料的實際需要,對原有運算子的運算進行適當的改造。一般來說,過載的功能應與原有功能類似。

3、過載之後,運算子的優先順序和結核性都不改變。

4、過載運算子的函式不能有預設的引數。

5、過載時,運算子的運算元個數保持不變,即雙目運算子任然是雙目運算子,單目運算子任然是單目運算子。

6、過載的運算子至少有乙個運算元是自定義類的物件。對於雙目運算子,左運算元要求一定是自定義的物件,右運算元可以實物件,也可以是整數、實數等基本資料。

7、運算子過載函式可以使類的成員函式,也可以是類的友元函式,還可以是普通函式。

#include 

using

namespace

std;

class complex

complex operator+(complex &c2);//通過成員函式實現+法

complex operator++(int);//通過成員函式實現後置++

bool

operator==(complex &c2);//通過成員函式實現關係運算子==

complex operator=(int i);//通過成員函式實現賦值運算子=

complex operator(int i);//通過成員函式實現下標運算子

void display();

private:

double real;

double imag;

};complex complex::operator+(complex &c2)

void complex::display()

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

complex complex::operator++(int)//後置++

complex operator--(complex &c)//前置--

ostream &operator

<

bool complex::operator==(complex &c2)

complex complex::operator=(int i)

complex complex::operator(int i)

int main()

else

for (int i = 0; i < 5; i++)//期望讓a陣列中的實部與虛部值都為i

return

0;}

C語言在 define中使用 運算子和 運算子

下面是乙個類函式巨集 define psqr x printf the square of x is d.n x x 如果這樣使用巨集 psqr 8 則輸出為 the square of x is 64.引號中的字串中的x被看作普通文字,而不是被看作乙個可被替換的語言符號。1 利用巨集引數建立字串 ...

C語言基礎丨運算子之位運算子(六)

對於更多緊湊的資料,c 程式可以用獨立的位或多個組合在一起的位來儲存資訊。檔案訪問許可就是乙個常見的應用案例。位運算子允許對乙個位元組或更大的資料單位中獨立的位做處理 可以清除 設定,或者倒置任何位或多個位。也可以將乙個整數的位模式 bit pattern 向右或向左移動。按位與 按位或 按位異或 ...

C 基礎 運算子

運算子用於執行程式 運算,會針對乙個以上運算元進行運算。是程式中的乙個重要組成部分,目前為止,任何一門語言都會有其運算子。我們在學習c 之前,已經接觸過vb了。vb中的運算子,大家現在是不是忘得差不多了呢?接下來這篇部落格將比較一下vb和c 中運算子的異同點。一 算數運算子 從圖中,我們不難看出vb...