1. 程式人生 > >C++小結--函式過載

C++小結--函式過載

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
我是第2function
12.3
我是第3function
12.3b12
我是第4function
12.323x
我是第5function
我是第2function
12.3
88
請按任意鍵繼續. . .

4 函式過載總結

1、傳入的兩個引數如 (int a ,char b )和 (char b, int a )都算兩個不同的過載函式

2、函式過載可以簡化呼叫

3、函式過載的時候函式體可以是不同的,只要函式名不同就好了,返回值不可以作為函式過載的條件。

4、VS編譯器預設浮點數是double

5、過載函式的返回值可以不一樣。

6、過載函式中可以繼續呼叫本函式的其他函式體,注意:不能遞迴呼叫自己。