缺省參數?
在C++中,允許實參的個數與形參的個數不同。在聲明函數原型時,為一個或者多個形參指定默認值,以后調用這個函數時,若省略某一個實參,c++則自動的以默認值作為相應參數的值。
實列說明:
#include<iostream>
using namespace std;
int add(int x=4,int y=7)
{
return x+y;
}
int main()
{
cout<<add(3,6)<<endl;
cout<<add(3)<<endl;
cout<<add()<<endl;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
運行結果:
解析:
1、程序執行cout<<add(3,6)<<endl;語句時,因為函數add(3,6)傳入了兩個實參,與形參的個數一值,所以此時x=3,y=6。
2、程序執行cout<<add(3)<<endl;語句時,因為函數add(3)只傳入了一個實參,與形參的個數不一值,所以此時先按從左到右的順序將實參和形參相結合,所以x=3,又因為實參個數只有一個,於是另外一個形參取默認值,所以y=7。
3、程序執行cout<<add()<<endl;語句時,因為函數add()沒有傳入實參,所以此時所有的形參都取默認值,於是此時x=4,y=7。
注意:
1、指定默認值的參數必須放在形參列表中的最右端。 列如:
int func(int i,int j=5,int k);
1
這樣是錯誤的。應該改為:
int func(int i,int k,int j=5);
1
2、在函數調用時,若個實參省略,則其后的所有實參都應該省略。不允許某個實參省略后,后面的實數再指定參數。 列如:
add(,7);
1
這是錯誤的。
3、只需要在函數聲明和函數定義中一個給出默認值即可。
---------------------