1 什麼是默認實參?
函數中形式參數被反覆賦予同一數值稱爲默認實參(Default argument)。
2 爲什麼是默認實參?
省略部分參數,功能與僅參數個數不同的函數重載相似,不過函數重載是通過編譯器匹配,而默認實參是用戶控制的“匹配”行爲。默認實參可以實現“函數重載”,但是又比重載更加靈活,定義了一系列的函數重載行爲。
3 怎麼用默認實參?
在函數聲明中賦予一個或者多個形參默認值,在使用時省略相應的實參即可。需要注意以下幾點:
- 函數多次聲明可以添加默認實參,已存在的實參不可重複聲明
void fun(int a,string str="apple",double b=3.14);
void fun(int a=1,string str,double b);//補充聲明只需指明補充部分即可,已有部分不能覆蓋
- 從第一個聲明的實參開始,所有參數必須有默認實參
void fun(int a,string str="apple",double b=3.14);//從str開始到尾部都必須定義
- 局部變量不可以作爲實參,全局變量可以
int value=23;
void fun(int a=value,string str="apple",double b=3.14);
int main()
{
return 0;
}
-
實參在聲明所在作用域解析,局部變量根本不起作用,全局變量倒是可以
-
調用時默認實參負責填充尾部實參
fun(,,3.14);//錯誤,省略只能在尾部
void fun(int a=1,string str="apple",double b=3.14)
{
cout<<"a="<<a<<endl;
cout<<"str="<<str<<endl;
cout<<"b="<<b<<endl;
}
4 其他注意事項
C語言不支持默認實參。
void fun(int a=3)
{
printf("a=%d\n",a);
}
int main()
{
fun(2);
return 0;
}