使用方法:
(1)在函數聲明或定義時,直接對參數賦值,該參數就是默認參數。
(2)在函數調用時,省略部分或全部參數,這時就會使用默認參數進行代替。
注意事項:
(1)一般在聲明函數是設置默認參數。
如果在函數聲明和定義函數時都設置了默認參數,則以函數聲明的默認參數為准。
#include<iostream>
using namespace std;
int main()
{
double add(double a=3.2,double b=9.6);//在函數聲明時設置默認參數
cout<<add()<<endl; //使用默認參數
return 0;
}
double add(double a=3.2,double b=9.5)//在定義函數時設置默認參數
{
return a+b;
}
運行結果:
(2)默認參數的定義順序是自右向左。
即如果設置了一個缺省值,其右邊的參數也應該設定一個缺省值。
即:
int add(int a,int b=1,int c=1);
這樣做是正確的。
而:
int add(int a=1,int b,int c);
這樣做是錯誤的。
這樣做是因為實參傳給系統之後,系統會自左向右與形參進行匹配。
如果函數時add(1,2),那麼a=1,b=2,c等於多少呢?我們只有把參數全部傳遞過去之後,系統才能獲得c的值,但這樣做的話,為什麼還要設置函數的默認參數呢?
所以編譯系統不允許程序員這麼做,因為這麼做是毫無意義的。
(3)默認參數的調用順序是自左向右。
我們在使用函數的時候,實參必須是由左自右書寫的。
/*正確的用法*/
add(1,2,3);//傳遞三個參數的值
add(1,2);//傳遞兩個參數的值
add(1);//傳遞一個參數的值
add();//不傳遞參數的值
/*錯誤的用法*/
add(,2,3);//不能省略掉左邊的參數的值,應該右左向右傳值
錯誤的提示: