函式重載

函式重載

函式重載是指同一個函式名可以對應著多個函式的實現。每種實現對應著一個函式體,這些函式的名字相同,但是函式的參數的類型不同。這就是函式重載的概念。函式重載在類和對象的套用尤其重要。

定義

所謂函式重載是指同一個函式名可以對應著多個函式的實現。例如,可以給函式名add()定義多個函式實現,該函式的功能是求和,即求兩個運算元的和。其中,一個函式實現是求兩個int型數之和,另一個實現是求兩個浮點型數之和,再一個實現是求兩個複數的和。每種實現對應著一個函式體,這些函式的名字相同,但是函式的參數的類型不同。這就是函式重載的概念。函式重載在類和對象的套用尤其重要。

計算

函式重載要求編譯器能夠唯一地確定調用一個函式時應執行哪個函式代碼,即採用哪個函式實現。確定函式實現時,要求從函式參數的個數和類型上來區分。這就是說,進行函式重載時,要求同名函式在參數個數上不同,或者參數類型上不同。否則,將無法實現重載
參數類型上不同的重載函式
下面舉一個在參數類型不同的重載函式的例子:
#include <iostream.h>
int add(int, int);
double add(double, double);
void main()
{
cout<<add(5, 10)<<endl;
cout<<add(5.0, 10.5)endl;
}
int add(int x, int y)
{
return x+y;
}
double add(double a, double b)
{
return a+b;
}
該程式中,main()函式中調用相同名字add的兩個函式,前邊一個add()函式對應的是兩個int型數求和的函式實現,而後邊一個add()函式對應的是兩個double型數求和的函式實現。這便是函式的重載。
以上程式輸出結果為:
15
15.5
參數個數上不同的重載函式
下面舉一個在參數個數上不相同的重載函式的例子:
#include <iostream.h>
int min(int a, int b);
int min(int a, int b, int c);
int min(int a, int b, int c, int d);
void main()
{
cout<<min(13, 5, 4, 9)<<endl;
cout<<min(-2, 8, 0)<<endl;
}
int min(int a, int b)
{
return a<b?a:b;
}
int min(int a, int b, int c)
{
int t = min(a, b);
return min(t,c);
}
int min(int a, int b, int c, int d)
{
int t1 = min(a, b);
int t2 = min(c, d);
return min(t1, t2);
}
該程式中出現了函式重載,函式名min對應有三個不同的實現,函式的區分依據參數個數不同,這裡的三個函式實現中,參數個數分別為2,3和4,在調用函式時根據實參的個數來選取不同的函式實現。
函式重載在類和對象套用比較多,尤其是在類的多態性中。在以後我們將碰到更多的在類型不同的函式重載,尤其是在結合類的繼承性和指針類型的不同,而這些都是我們以後用VC編程中經常要用到的。

相關詞條

相關搜尋

熱門詞條

聯絡我們