重載函式


C++ 支援函式重載(Overload),為類似功能的函式提供了統一名稱,然而根據參數列個數或型態的不同,由編譯器選擇要呼叫的函式,函式重載令開發者在設計函式名稱可以簡便一些。

例如,依參數列個數的不同來重載:

#include <iostream> 
using namespace std; 

void foo(int); 
void foo(int, int); 

int main() { 
    foo(10); 
    foo(20, 30); 

    return 0; 
} 

void foo(int x) { 
    cout << "引數:" << x << endl; 
} 

void foo(int x, int y) { 
    cout << "引數:" << x << " " << y << endl; 
}

執行結果:

引數:10
引數:20 30

也可以根據參數型態來決定呼叫的函式,例如:

#include <iostream> 
using namespace std; 

void foo(int); 
void foo(double); 

int main() { 
    foo(10); 
    foo(10.0); 

    return 0; 
} 

void foo(int x) { 
    cout << "int 引數:" << x << endl; 
} 

void foo(double x) { 
    cout << "double 引數:" << x << endl; 
} 

執行結果:

int 引數:10
double 引數:10

重載時可以根據參數資料型態,也可以根據參數的個數,或是兩者的結合,不過傳回型態不能作為重載的依據。