過載函式
定義過載函式是函式的一種特殊情況,為方便使用,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 這些函式接受的形參型別不一樣,...