函式的過載

2021-10-19 11:43:53 字數 827 閱讀 3304

函式過載(overload)是指多個函式使用相同的函式名。函式過載是多型性的體現,即使用同乙個函式名實現多種函式呼叫。

呼叫過載函式時,c++編譯器根據函式的實參型別來確定所呼叫的函式。因此,過載函式定義時,必須使彼此在引數個數引數型別上有所不同。

在呼叫同名函式時,編譯器怎麼知道到底呼叫的是哪個函式呢?編譯器是根據函式呼叫語句中實參的個數和型別來判斷應該呼叫哪個函式的。因為過載函式的參數列不同,而呼叫函式的語句給出的實參必須和參數列中的形參個數和型別都匹配,因此編譯器才能夠判斷出到底應該呼叫哪個函式。

僅返回值不同,不能定義為過載函式。因為c++允許 return 語句返回的表示式的型別與函式的型別不同(這時由系統做自動強制型別轉換),在函式呼叫時編譯器並不關心函式的返回值型別,而在函式返回時才涉及函式的返回值型別。

此外,還需注意兩點:

(1)不允許過載main() 函式,因為main()函式是c++程式執行的唯一入口

(2)函式過載時,避免使用形參的預設值。

比如:int add( int x, int y, int z=10)

int add(int x, int y)

此時呼叫函式 add( 5, 10)時,系統不確定呼叫哪個add()方法。

大部分的操作符可以被過載(其實質也是函式的過載),**"."、"::"、"? :「和"sizeof」**不可被過載。只能通過成員函式進行過載的: 「=」、"()"、"[ ]"、"->"。

函式的過載

在面向過程的程式設計模式下,程式被劃分為資料結構 函式,這也就是那句著名的 程式 資料結構 演算法 的由來 在面向過程的思考方式下,函式名就是最好的標識,而名稱組織良好的函式集合是判斷 是否優美的乙個重要因素 在物件導向的思考方式下,一切都不同了 常見的情況下,應該為不同的函式起不同的名字,但是當這...

函式的過載

在程式設計時,有時我們要實現的是同一類的功能,只是有些細節不同 例如希望從3個數中找出其中的最大者,而每次求最大數時資料的型別不同,可能是3個整數 3個雙精度數或3個長整數 程式設計者往往會分別設計出3個不同名的函式,其函式原型為 int max1 int a,int b,int c 求3個整數中的...

函式的過載

函式的過載即對乙個函式名重新賦予它新的含義,使乙個函式名可以多用,即一物多用。求3個數中的最大數 includeusing namespace std int max int a,int b,int c long max long a,long b,long c double max double ...