成人app

首頁  /  C++教程  /  C++函數重載  /  

C++函數重載

點擊打開在線編譯器,邊學邊練

 C+中的函數重載

 

成人app在實際的代碼編寫當中,有時候對于同一個功能函數,可能處理的對象類型不同,則需要重新實現一遍這個函數,這樣下去就顯得代碼更加繁多,C++為了解決這一問題,而支持函數重載來解決這個問題。

成人app比如一個算術求和的問題,需要自定義一個函數,用來接收傳入數據的并求和,但作為獨立的一個模塊,如何知道調用方,傳入什么類型的數據呢,可能是整型數據,當然也可能是浮點類型的數據,還可能是一個整數一個浮點型(還不知道哪一個是整型,哪一個是浮點型),而周全的做法是各種類型的形參的函數都要定義一個,即:兩個int類型的,兩個double類型的,第一個int第二個double的,及第一個double第二個int的類型的,定義四個函數來實現:比如名字叫:Add_double_double()、Add_int_double()、Add_int_int()、Add_double_int()等等

這看起來能不混亂嗎?

 

那么,C++中函數重載的出現,則很好的解決這個問題,函數重載即兩個或以上的函數,函數名相同,但形參類型或個數不同,編譯器根據調用方傳入的參數的類型和個數,自動選擇最適合的一個函數來進行綁定調用,自動實現選擇。

 

例如剛才加法的例子:

#include<iostream>
using namespace std;
int add(int a,int b)
{
    cout<<"(int ,int)\t";
    return a+b;
}
double add(double a,double b)
{
    cout<<"(doble ,double)\t";
    return a+b;
}
double add(double a,int b)
{
    cout<<"(double ,int)\t";
    return a+b;
}
double add(int a,double b)
{
    cout<<"(int ,double)\t";
    return a+b;
}
int main()
{
    cout<<add(2,3)<<endl;
    cout<<add(2.9,15.3)<<endl;
    cout<<add(10,9.9)<<endl;
    cout<<add(11.5,5)<<endl;
    return 0;
}

運行結果如下:

303.png


請大家仔細閱讀代碼,為了確認哪個函數得到執行,我們在函數內部加了一句cout的輸出語句,用來區分哪個函數得到調用。

 

大家一定自行上機實驗理解代碼!



本文固定URL:http://hnsaiyang.com/course/61

上一課:帶默認形參值的函數 下一課:函數模板
Dotcpp在線編譯      (登錄可減少運行等待時間)