定義:是函式的一種特殊情況,c++允許在同一作用域中宣告幾個功能類似的同名函式,這些同名函式的形參列表(引數個數 或 型別 或 順序)必須不同,常用來處理實現功能類似資料型別不同的問題。
**舉例說明:**給大家舉個例子吧:比如說「美的很」這句話,當你吃飯的時候,「美得很」可能就是飯很好吃的意思,當你看到你女朋友化妝很漂亮的時候,你說「美得很」就是說她很漂亮的意思,當你開心的時候,「美得很」就是形容心情好。
對於這種在不同場景下乙個詞有不同的含義的情況,我們就可以理解為過載。
而函式過載也就是這個意思了,在函式中使用相同名字的函式,但是函式中的引數或者型別卻不同的,我們把這樣的函式就叫做「過載函式」。
下面我們看兩段**:
1.int add(int left, int right)
double add(double left, double right)
long add(long left, long right)
int main()
執行後沒有錯誤。
同樣的add函式,可以使用不同的函式型別,可以是int型,double型,而函式的引數可以是不同的型別。
下面看這一段**:
我們可以看到,當函式型別不同時,函式引數不能相同,編譯器會報錯。
結論:過載函式需要在相同作用域,必須是同名函式,引數列表不同(個數,型別不同,型別次序不同)與返回值型別是否相同無關。
為什麼c語言不能實現函式過載
使用c語言執行如下**:
int add(int left, int right);
int main()
編譯器報錯:error lnk2019: 無法解析的外部符號 _add,該符號在函式 _main 中被引用。
在main函式中引用的add函式找不到函式體。從報錯結果中可以看到,c語言只是簡單的在函式名前新增下劃線。因此當工程中存在相同函式名的函式時,就會產生衝突。
由於c++要支援函式過載,命名空間等,使得其修飾規則比較複雜,不同編譯器在底層的實現方式可能都有差異。
以上就是我對最近學習的函式過載的一點了解,還有很多需要學習的地方,希望大家多多批評指教。
C 中的函式過載
你可以重新定義或過載的大部分 c 已有的操作符。因此,程式設計師可以像使用使用者自定義型別一樣使用操作符。過載操作符是一類函式,它們就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別。像任何其它函式,過載運算子也有返回型別和引數列表。box operator const box ...
c 中的函式過載
回學校搞畢設,複習一下c 今天就專門講一下函式過載 函式過載 c 允許在同一作用域中用同一函式名定義多個函式,這些函式的引數個數和引數型別不相同,這些同名的函式用 來實現不同的功能,這就是函式的過載。首先是函式名相同 要求這些函式的引數和引數型別可以都不同,也就是說過載函式的引數個數和型別必須至少有...
c 中的函式過載
include using namespace std class base public void func int a cout this is a 以上程式執行編譯會報錯 void base func int cannot be overloaded 即函式不能構成過載,原因分別為 注意,如果...