C 過載函式運算子和過載函式

2021-08-19 03:35:53 字數 1265 閱讀 6785

c++ 允許在同一作用域中的某個函式和

運算子指定多個定義,分別稱為

函式過載

和運算子過載

。過載宣告是指乙個與之前已經在該作用域內宣告過的函式或方法具有相同名稱的宣告,但是它們的引數列表和定義(實現)不相同。

當您呼叫乙個

過載函式

或過載運算子

時,編譯器通過把您所使用的引數型別與定義中的引數型別進行比較,決定選用最合適的定義。選擇最合適的過載函式或過載運算子的過程,稱為

過載決策

。在同乙個作用域內,可以宣告幾個功能類似的同名函式,但是這些同名函式的形式引數(指引數的個數、型別或者順序)必須不同。您不能僅通過返回型別的不同來過載函式

c++預定義中的運算子的操作物件只侷限於基本的內建資料型別,但是對於我們自定義的型別(類)是沒有辦法操作的。但是大多時候我們需要對我們定義的型別進行類似的運算,這個時候就需要我們對這麼運算子進行重新定義,賦予其新的功能,以滿足自身的需求。

運算子過載的實質就是函式過載或函式多型。運算子過載是一種形式的c++多型。目的在於讓人能夠用同名的函式來完成不同的基本操作。要過載運算子,需要使用被稱為運算子函式的特殊函式形式,運算子函式形式:operatorp(argument-list)//operator後面的'p'為要過載的運算子符號。

可過載運算子/不可過載運算子

下面是可過載的運算子列表:

雙目算術運算子

+ (加),-(減),*(乘),/(除),% (取模)

關係運算子

==(等於),!= (不等於),< (小於),> (大於》,<=(小於等於),>=(大於等於)

邏輯運算子

||(邏輯或),&&(邏輯與),!(邏輯非)

單目運算子

+ (正),-(負),*(指標),&(取位址)

自增自減運算子

++(自增),--(自減)

位運算子

| (按位或),& (按位與),~(按位取反),^(按位異或),,<< (左移),>>(右移)

賦值運算子

=, +=, -=, *=, /= , % = , &=, |=, ^=, <<=, >>=

空間申請與釋放

new, delete, new[ ] , delete

其他運算子

()(函式呼叫),

->(成員訪問),

,(逗號),

(下標)

下面是不可過載的運算子列表:

C 運算子過載和函式過載

c 允許在同一作用域中的某個函式和運算子指定多個定義,分別稱為函式過載和運算子過載。過載宣告是指乙個與之前已經在該作用域內宣告過的函式或方法具有相同名稱的宣告,但是它們的引數列表和定義 實現 不相同。當呼叫乙個過載函式或過載運算子時,編譯器通過把您所使用的引數型別與定義中的引數型別進行比較,決定選用...

C 過載運算子和過載函式

c 函式過載 在同乙個作用域內,可以宣告幾個功能類似的同名函式,但這些同名函式的形式引數必須不同。c 中的運算子過載 過載的運算子是帶有特殊名稱的函式,函式名是由關鍵字 operator 和其後要過載的運算子符號構成的。可過載運算子 不可過載運算子 可過載運算子 雙目算術運算子,關係運算子,邏輯運算...

C 過載運算子和過載函式

參考 前言 運算子過載和函式過載體現了物件導向技術的多型性。多型性機制不僅增加了物件導向軟體系統的靈活性,進一步減少了冗餘資訊,而且顯著提高了軟體的可重用性和可擴充性。從實現的角度來講,多型性可以劃分為兩類 編譯時的多型性和執行時的多型性。在c 語言中,編譯時的多型性主要是通過函式過載和運算子過載實...