C++帶參數默認值的函數

定義形式:

void fun(int a = 1 ,int b = 2 ,int c = 3 ,int d = 4){ //函數定義
     cout<<"a="<<a<<endl;
     cout<<"b="<<b<<endl;
     cout<<"c="<<c<<endl;
     cout<<"d="<<d<<endl;
}

調用方式:

fun();               //a=1,b=2,c=3,d=4;
fun(-1);             //a=-1,b=2,c=3,d=4;
fun(-1,-2);          //a=-1,b=-2,c=3,d=4;
fun(-1,-2,-3);       //a=-1,b=-2,c=-3,d=4;
fun(-1,-2,-3,-4);    //a=-1,b=-2,c=-3,d=-4;
可見調用函數時,函數的實參按照參數列表從左往右的順序與形參一一對應。

帶默認值和不帶默認值混合的情況:

void fun(int a ,int b = 2 ,int c = 3 ,int d = 4);  // 正確
void fun(int a = 1 ,int b ,int c = 3 ,int d = 4)  // 錯誤
不帶默認值的參數都應該放在參數列表的左邊,有默認值的參數都應該放在參數列表的右邊

聲明和定義不能同時有默認值:

void fun(int a=1,int b=2,int c=3,int d=4);

void fun(int a=1,int b=2,int c=3,int d=4{
   cout<<"a="<<a<<endl;
   cout<<"b="<<b<<endl;
   cout<<"c="<<c<<endl;
   cout<<"d="<<d<<endl;
}

編譯出錯,當又有聲明又有定義時,定義中不允許默認參數。

函數聲明起決定性作用:

void fun(int a,int b,int c,int d);

void main(){
	fun();
}
void fun(int a=1,int b=2,int c=3,int d=4){
	cout<<"a="<<a<<endl<<"b="<<b<<endl<<"c="<<c<<endl<<"d="<<d<<endl;
}

編譯出錯,函數聲明顯示該函數參數沒有默認值,所以調用函數時要求必須有4個實參

發佈了47 篇原創文章 · 獲贊 28 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章