C++小結--函式過載
阿新 • • 發佈:2018-11-02
1 什麼是函式過載
在C++中,一個函式名有多個函式體的實現方式就叫做函式過載。換句話說,我們使用同一個函式,傳入不同的引數,會返回不同的呼叫結果。
2 為什麼需要函式過載
函式過載可以提高函式呼叫的靈活性,我們不必再為函式名名而苦惱。比如在C語言中,我們要計算加法,可以寫如下一個函式來實現:
int add(int a, int b)
{
return a + b;
}
這樣我們在需要呼叫的時候就可以直接呼叫sum = add(100, 200);
,但是,我們想要一個浮點數的加法運算函式呢?這樣sum = add(12.3, 33.2);
,顯然是不對的。所以又有人提出,再寫一個加法函式來實現浮點數相加不就行了嗎。沒錯,我們又寫了一個浮點數的加法函式:
float add1(float a; float b)
{
return a+b;
}
這樣是解決浮點數相加的問題。但是,又有同學提出我要一個整型+浮點型的加法函式,於是,我們又寫了一個函式add3();
,這樣實現下去真是無窮無盡啊。而且,時間久了,你知道add()、add1()、add2()、add3()分別是對應那種加法嗎?
所以在C++中,引入了函式過載的概念,我同一個函式名可以有不同的函式體,比如實現同樣的add函式,在C++中可以這樣實現:
int add(int a , int b)
{
return (a + b);
}
float add(float a , float b)
{
return (a + b);
}
這樣在需要呼叫的地方我們可以直接sum = add(12, 13);
或者sum = add(12.3 + 23.4);
都可以返回正確的呼叫結果。編譯器會根據不同的傳參來決定呼叫哪個函式體。
3 函式過載實踐
#include <iostream>
using namespace std;
int func(int a , char c )
{
cout << "我是第一個function" << endl;
cout << a << c << endl;
return 0;
}
int func(float x )
{
cout << "我是第2個function" << endl;
cout << x << endl;
return 0;
}
int func(float f , char c ,int x )
{
cout << "我是第3個function" << endl;
cout << f << c << x << endl;
return 0;
}
float func(float f , int x ,char c)
{
cout << "我是第4個function" << endl;
cout << f << x << c << endl;
return 0;
}
int func(int x)
{
cout << "我是第5個function" << endl;
//func(12); //錯誤,不能遞迴呼叫自己
func(12.3f); //正確 可以正常呼叫
cout << x << endl;
return 0;
}
int main()
{
func(23, 'b');
func(12.3f);
func(12.3, 'b', 12);
func(12.3, 23, 'x');
func(88);
system("pause");
return 0;
}
執行結果如下:
我是第一個function
23b
我是第2個function
12.3
我是第3個function
12.3b12
我是第4個function
12.323x
我是第5個function
我是第2個function
12.3
88
請按任意鍵繼續. . .
4 函式過載總結
1、傳入的兩個引數如 (int a ,char b )和 (char b, int a )都算兩個不同的過載函式
2、函式過載可以簡化呼叫
3、函式過載的時候函式體可以是不同的,只要函式名不同就好了,返回值不可以作為函式過載的條件。
4、VS編譯器預設浮點數是double
5、過載函式的返回值可以不一樣。
6、過載函式中可以繼續呼叫本函式的其他函式體,注意:不能遞迴呼叫自己。