C 函式過載

2021-07-26 16:18:47 字數 2093 閱讀 7037

在程式設計時,有時我們要實現的是同一類的功能,只是有些細節不同。例如希望從3個數中找出其中的最大者,而每次求最大數時資料的型別不同,可能是3個整數、3個雙精度數或3個長整數。程式設計者往往會分別設計出3個不同名的函式,其函式原型為:

int max1(int a, int b, int c);  //求3個整數中的最大者

double max2(double a, double b, double c);  //求3個雙精度數中最大者

long  max3(long a, long b, long c);  //求3個長整數中的最大者

c++允許用同一函式名定義多個函式,這些函式的引數個數和引數型別不同。這就是函式的過載(function overloading)。即對乙個函式名重新賦予它新的含義,使乙個函式名可以多用。

對上面求最大數的問題可以編寫如下的c++程式。

【例4.5】求3個數中最大的數(分別考慮整數、雙精度數、長整數的情況)。

複製純文字新視窗

#include

using namespace std;

int main( )

int max(int a,int b,int c) //定義求3個整數中的最大者的函式

double max(double a,double b,double c)//定義求3個雙精度數中的最大者的函式

long max(long a,long b,long c) //定義求3個長整數中的最大者的函式

#include using namespace std;

int main( )

double max(double a,double b,double c)//定義求3個雙精度數中的最大者的函式

long max(long a,long b,long c) //定義求3個長整數中的最大者的函式

運**況如下:

185-76567↙ (輸入3個整數)

56.87  90.23  -3214.78↙  (輸入3個實數)

67854  -912456  673456↙  (輸入3個長整數)

i_max=567 (輸出3個整數的最大值)

d_max=90.23  (輸出3個雙精度數的最大值)

g_max=673456 (輸出3個長整數的最大值)

上例3個max函式的函式體是相同的。

其實過載函式並不要求函式體相同;除了允許引數型別不同以外,還允許引數的個數不同。

【例4.6】編寫乙個程式,用來求兩個整數或3個整數中的最大數。如果輸入兩個整數,程式就輸出這兩個整數中的最大數,如果輸入3個整數,程式就輸出這3個整數中的最大數。

複製純文字新視窗

#include

using namespace std;

int main( )

int max(int a,int b,int c)//此max函式的作用是求3個整數中的最大者

int max(int a,int b)//此max函式的作用是求兩個整數中的最大者

#include using namespace std;

int main( )

int max(int a,int b)//此max函式的作用是求兩個整數中的最大者

運**況如下:

max(a, b, c)=27

max(a, b)=8

兩次呼叫max函式的引數個數不同,系統就根據引數的個數找到與之匹配的函式並呼叫它。

引數的個數和型別可以都不同。但不能只有函式的型別不同而引數的個數和型別相同。例如:

int f(int);  //函式返回值為整型

long f(int);  //函式返回值為長整型

void f(int);  //函式無返回值

在函式呼叫時都是同一形式,如「f(10)」。編譯系統無法判別應該呼叫哪乙個函式。過載函式的引數個數、引數型別或引數順序3者中必須至少有一種不同,函式返回值型別可以相同也可以不同。

在使用過載函式時,同名函式的功能應當相同或相近,不要用同一函式名去實現完全不相干的功能,雖然程式也能執行,但可讀性不好,使人莫名其妙。

mysql 函式過載 C 方法過載(函式過載)

在講解 c 構造方法 時提到定義構造方法時提到可以定義帶 0 到多個引數的構造方法,但構造方法的名稱必須是類名。實際上,這就是乙個典型的方法過載,即方法名稱相同 引數列表不同。引數列表不同主要體現在引數個數或引數的資料型別不同。在呼叫過載的方法時系統是根據所傳 遞引數的不同判斷呼叫的是哪個方法。例項...

C 函式 函式過載

如果同一作用域內的幾個函式名字相同但形參列表不同,我們稱之為過載函式。void print const char cp void print const int beg,const int end void print const int ia,size t size 這些函式接受的形參型別不一樣,...

C 函式過載

函式過載 overloaded function 在相同的作用域中的兩個函式,如果有相同的名字而形參表不同 注意 如果僅僅函式的返回值不同是不能實現函式過載 void func int int func int error,僅僅返回值不同是不能作為函式過載,這屬於函式重定義 形參表包括 引數的型別 ...