首先函數重載的目的就是實現用相同的函數名根據不同的參數實現不同的功能。形參的不同有兩方面,一是形參的類型不同,二是形參的個數不同,對於重載函數的選擇調用也只能通過這兩個方面來區分。
但是在使用有默認形參值的函數重載形式時要注意防止二義性,舉個栗子說明一下:
void A(int a,int b=1)
void A(int a)
這兩個函數看似形參個數不同,但當使用A(1)進行調用時,編譯器無法確定該執行哪個重載函數
下面舉一個正確重載的例子:
#include<iostream>
using namespace std;
int add(int x,int y)
{
return x+y;
}
float add(float x,float y)
{
return x+y;
}
int add(int x,int y,int z)
{
return x+y+z;
}
int main()
{
int a,b, ;
cin>>a>>b;
cin>>o;
cout<<add(a,b)<<endl;
cout<<add(a,b,o)<<endl;
float c,d;
cin>>c>>d;
cout<<add(c,d)<<endl;
return 0;
}
輸入與結果如下:
1 2 3
3
6
1.2 1.3
2.5