C++允許用同一個函數名定義多個函數,而這些函數的參數個數和參數類型可以不相同。這就是函數重載。
注意是個數和類型都能不同
其意義在于,如果想要實現一個功能,但是由于變量類型不同或參數個數不同的情況,需要定義不同名稱的功能相同的函數,而函數重載功能可以允許用戶只定義一個函數名,這個函數名有多個不同的含義,使得一個函數名可以多用,而在調用該函數時,系統會根據實參類型和個數的不同自動找到與之匹配的函數,然后調用該函數。
所以,函數重載功能的本質是可以只用一個函數名(重載它),但是想要給這個函數名賦予多個不同的含義,還是要定義。比如要實現一個找最大值的功能,但是實參可能是int 或double類型,那么還是要定義兩個不同的函數,只是他們用了同一個名字,如下: 其實c++為了解決這個問題,提供了另一個函數模板功能: http://blog.csdn.net/chaipp0607/article/details/55546582
int max(int a,int b,int c){ if (b>a) a=b; if (c>a) a=c; return a;}double max(double a,double b,double c){ if (b>a) a=b; if (c>a) a=c; return a;}舉個例子:函數參數個數相同,但是參數類型不同
#include <iostream> using namespace std; int main( ) { int max(int a,int b,int c); double max(double a,double b,double c); int i =1; int j =2; int k =3; int l = max(i,j,k); cout <<l<<endl; double q =1.11; double w =2.21; double e =3.31; double r = max(q,w,e); cout <<r<<endl; getchar(); return 0; } int max(int a,int b,int c){ if (b>a) a=b; if (c>a) a=c; return a;}double max(double a,double b,double c){ if (b>a) a=b; if (c>a) a=c; return a;}運行結果: 3 3.31
舉個例子:函數參數個數不同,參數類型相同
#include <iostream> using namespace std; int main( ) { int max(int a,int b); int max(int a,int b,int c); int i =1; int j =2; int k =3; int m = max(i,j); int l = max(i,j,k); cout <<m<<endl; cout <<l<<endl; getchar(); return 0; } int max(int a,int b){ if (b>a) a=b; return a;}int max(int a,int b,int c){ if (b>a) a=b; if (c>a) a=c; return a;}運行結果: 2 3
新聞熱點
疑難解答
圖片精選