C 可過載函式

2021-07-23 15:46:13 字數 1232 閱讀 9011

過載函式

定義過載函式是函式的一種特殊情況,為方便使用,c++允許在同一範圍中宣告幾個功能類似的同名函式,但是這些同名函式的形式引數(指引數的個數、型別或者順序)必須不同,也就是說用同乙個運算子完成不同的運算功能。這就是過載函式。過載函式常用來實現功能類似而所處理的資料型別不同的問題。

兩個過載函式必須在下列乙個或兩個方面有所區別:

1.、函式有不同引數。

2、函式有不同引數型別,

c++的這種程式設計機制給程式設計者極大的方便,不需要為功能相似、引數不同的函式選用不同的函式名,也增強了程式的可讀性。

c++運算子過載的相關規定如下:

(1)不能改變運算子的優先順序;

(2)不能改變運算子的結合型;

(3)預設引數不能和過載的運算子一起使用;

(4)不能改變運算子的運算元的個數;

(5)不能建立新的運算子,只有已有運算子可以被過載;

(6)運算子作用於c++內部提供的資料型別時,原來含義保持不變。

過載函式(overloaded function)是c++支援的一種特殊函式,c++編譯器對函式過載的判斷更是c++語言中最複雜的內容之一

過載函式的定義:在相同的宣告域中的函式名相同的,而參數列不同的,即通過函式的參數列而唯一標識並且來區分函式的一種特殊的函式。

函式為什麼要過載呢?何時應該選擇函式過載(function overloading)?

函式的過載其實就是「一物多用」的思想(這裡指的「物」是「函式名」),其實不僅是函式可以過載,運算子也是可以過載的。

例如:運算子「<<」和「>>」既可以作為移位運算子,有可以作為輸出流中的插入運算子和輸入流中的提取運算子。

當將要定義一組函式,使它們執行一系列的操作,但是它們是應用在不同的引數型別上的。此時我們可以選擇過載函式。

例如: int z_x_max (int,int); //返回兩個整數的最大值;

int ve_max (const vector &); //返回vector容器中的最大值;

int matrix_max (const matrix &); //返回matrix引用的最大值;

上面的三個函式都可以大概地說成判斷一組數中的最大值,對於函式的使用者來說,他們並不關心函式定義的細節,也就是說他們不關心判斷兩個整數的大小和判斷陣列(vector容器)數的大小應該使用不同的函式,而對於程式的設計者來說這可是不得不想到的。程式設計師必須記住並查詢每個函式名。而函式的過載把程式設計師從這種問題的複雜性中解放了出來,c++提供了這種支援。

函式可重入和可過載

可重入函式 可重入函式主要用於多工環境中,乙個可重入的函式簡單來說就是可以被中斷的函式,也就是說,可以在這個函式執行的任何時刻中斷它,轉入os排程下去執行另外一段 而返回控制時不會出現什麼錯誤 而不可重入的函式由於使用了一些系統資源,比如全域性變數區,中斷向量表等,所以它如果被中斷的話,可能會出現問...

mysql 函式過載 C 方法過載(函式過載)

在講解 c 構造方法 時提到定義構造方法時提到可以定義帶 0 到多個引數的構造方法,但構造方法的名稱必須是類名。實際上,這就是乙個典型的方法過載,即方法名稱相同 引數列表不同。引數列表不同主要體現在引數個數或引數的資料型別不同。在呼叫過載的方法時系統是根據所傳 遞引數的不同判斷呼叫的是哪個方法。例項...

C 函式 函式過載

如果同一作用域內的幾個函式名字相同但形參列表不同,我們稱之為過載函式。void print const char cp void print const int beg,const int end void print const int ia,size t size 這些函式接受的形參型別不一樣,...