4 2 物件與類(二) 運算子過載

2021-10-23 06:23:05 字數 841 閱讀 2510

在c++中,函式過載也稱為函式多型,運算子過載是一種形式的c++多型。運算子過載將過載的概念擴充套件到運算子上,允許賦予c++運算子多種含義。例如*運算子用於位址,將得到儲存在這個位址中的值,但將它用於兩個數字時,得到的將是它們的乘積。此時,c++根據運算元的數目和型別來決定採用哪種操作。

c++允許將運算子過載擴充套件到使用者定義的型別,如物件。要過載運算子,需使用被稱為運算子函式的特殊函式形式。運算子函式的格式如下:operatorop(引數列表),其中op為運算子。如operator+(),過載+運算子。

c++也對運算子過載做出了限制:

大都數運算子都可通過成員函式或非成員函式(友元函式)過載,但存在以下運算子只能通過成員函式過載:=賦值運算子,()函式呼叫運算子,下標運算子,->通過指標訪問類成員運算子。

// +過載示例

class time

time operator+(const time &t)const

void show()const

};int main()

// 示例輸出結果

10hours,0minutes

1):time t3 = t1 + t2;的實質是time t3 = t1.operator+(t2);,也是另一種寫法。注意:+運算子左側是呼叫物件,右側是作為引數被傳遞的物件。例如:t4 = t1 + t2 + t3;在定義後都是合法的,operater+()返回的是time物件,t4 = t1 + t2 + t3;會被轉換為t4 = t1.operator+(t2.operator+(t3));。

C 類與物件 運算子過載

在某些特殊的運算情況下,以正常的運算方法不匹配時,就可以使用運算子過載 注意 當過載運算子一樣的時候,類內作為友元的只放乙個就可以了 標頭檔案 include class computer 實現cpp檔案 include computer.h include computer computer in...

類和物件 運算子過載 3 遞增運算子過載

作用 通過過載遞增運算子,實現自己的整型資料 include include using namespace std 自定義整型 class myinteger 過載前置 運算子 myinteger operator 返回引用為了一直對乙個資料進行遞增操作 過載後置 運算子 myinteger op...

類與物件 C 過載運算子

class person 呼叫形式 person p3 p1.operator p2 或者 p3 p1 p2 person operator person p1,person p2 intmain 一般情況下,我們把算術運算子定義成非成員函式,因為我們不需要改變運算物件的狀態,所以形參都是常量的引用...