函數聲明的默認實參

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;
}

C語言不支持默認實參

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章