具有相同名稱(chēng)但參數(shù)不同的兩個(gè)或多個(gè)函數(shù)稱(chēng)為重載函數(shù)。在本文中,您將通過(guò)示例了解函數(shù)重載。
函數(shù)是指將代碼分組以執(zhí)行特定任務(wù)的代碼片段。
在C ++編程中,如果傳遞的參數(shù)的個(gè)數(shù)或類(lèi)型不同,則兩個(gè)函數(shù)可以具有相同的名稱(chēng)。
這些具有不同參數(shù)個(gè)數(shù)或類(lèi)型(或兩者兼有)參數(shù)的函數(shù)稱(chēng)為重載函數(shù)。例如:
int test() { }
int test(int a) { }
float test(double a) { }
int test(int a, double b) { }這里,所有4個(gè)函數(shù)都是重載函數(shù),因?yàn)閭鬟f給這些函數(shù)的參數(shù)不同。
注意,這4個(gè)函數(shù)的返回類(lèi)型并不相同。重載函數(shù)可能有也可能沒(méi)有不同的返回類(lèi)型,但是應(yīng)該有不同的參數(shù)。
// 錯(cuò)誤代碼
int test(int a) { }
double test(int b){ }即使返回類(lèi)型不同,但是傳遞給這兩個(gè)函數(shù)的參數(shù)個(gè)數(shù)和數(shù)據(jù)類(lèi)型都相同。因此,編譯器將拋出錯(cuò)誤。
#include <iostream>
using namespace std;
void display(int);
void display(float);
void display(int, float);
int main() {
int a = 5;
float b = 5.5;
display(a);
display(b);
display(a, b);
return 0;
}
void display(int var) {
cout << "整數(shù): " << var << endl;
}
void display(float var) {
cout << "浮點(diǎn)數(shù): " << var << endl;
}
void display(int var1, float var2) {
cout << "整數(shù): " << var1;
cout << " 和浮點(diǎn)數(shù):" << var2;
}輸出結(jié)果
整數(shù): 5 浮點(diǎn)數(shù): 5.5 整數(shù): 5 和浮點(diǎn)數(shù):5.5
在這里,display()函數(shù)使用不同類(lèi)型或數(shù)量的參數(shù)調(diào)用了三次。
所有這些函數(shù)的返回類(lèi)型都是相同的,但這不是必需的。
//程序計(jì)算絕對(duì)值
//對(duì)整數(shù)和浮點(diǎn)數(shù)都有效
#include <iostream>
using namespace std;
int absolute(int);
float absolute(float);
int main() {
int a = -5;
float b = 5.5;
cout << "數(shù)字 " << a << " 的絕對(duì)值= " << absolute(a) << endl;
cout << "數(shù)字 " << b << " 的絕對(duì)值= " << absolute(b);
return 0;
}
int absolute(int var) {
if (var < 0)
var = -var;
return var;
}
float absolute(float var){
if (var < 0.0)
var = -var;
return var;
}輸出結(jié)果
數(shù)字 -5 的絕對(duì)值= 5 數(shù)字 5.5 的絕對(duì)值= 5.5
在上面的示例中,兩個(gè) absolute()函數(shù)被重載。
這兩個(gè)函數(shù)都采用單個(gè)參數(shù)。但是,一個(gè)函數(shù)將integer作為參數(shù),而另一個(gè)將float作為參數(shù)。
以int作為參數(shù)調(diào)用absolute()函數(shù)時(shí),調(diào)用此函數(shù):
int absolute(int var) {
if (var < 0)
var = -var;
return var;
}以float作為參數(shù)調(diào)用absolute()函數(shù)時(shí),將調(diào)用此函數(shù):
float absolute(float var){
if (var < 0.0)
var = -var;
return var;
}