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...