C++ 基礎(chǔ)教程

C++ 流程控制

C++ 函數(shù)

C++ 數(shù)組 & 字符串

C++ 數(shù)據(jù)結(jié)構(gòu)

C++ 類 & 對(duì)象

C++ 指針

C++ 繼承

C++ STL 教程

C++ 參考手冊(cè)

C++ 函數(shù)重載

具有相同名稱但參數(shù)不同的兩個(gè)或多個(gè)函數(shù)稱為重載函數(shù)。在本文中,您將通過示例了解函數(shù)重載。

函數(shù)是指將代碼分組以執(zhí)行特定任務(wù)的代碼片段。

在C ++編程中,如果傳遞的參數(shù)的個(gè)數(shù)或類型不同,則兩個(gè)函數(shù)可以具有相同的名稱。

這些具有不同參數(shù)個(gè)數(shù)或類型(或兩者兼有)參數(shù)的函數(shù)稱為重載函數(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ù)的返回類型并不相同。重載函數(shù)可能有也可能沒有不同的返回類型,但是應(yīng)該有不同的參數(shù)。

// 錯(cuò)誤代碼
int test(int a) { }
double test(int b){ }

即使返回類型不同,但是傳遞給這兩個(gè)函數(shù)的參數(shù)個(gè)數(shù)和數(shù)據(jù)類型都相同。因此,編譯器將拋出錯(cuò)誤。

示例1:函數(shù)重載

#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ù)使用不同類型或數(shù)量的參數(shù)調(diào)用了三次。

所有這些函數(shù)的返回類型都是相同的,但這不是必需的。

示例2:函數(shù)重載

//程序計(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;
}

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清