实参与形参的结合是从左至右顺序进行的。因此指定默认值的参数必须放在形参表列中的最右端,否
则出错。例如:
void f1(float a,int b=0,int c,char d=′a′); //不正确
void f2(float a,int c,int b=0, char d=′a′); //正确
在调用有默认参数的函数时,实参的个数可以与形参的个数不同,实参未给定的,从形参的默认值得到值
1 #include <iostream> 2 using namespace std; 3 4 int max(int a, int b, int c = 0); 5 6 int main() 7 { 8 int x = 01, y = -20, z = 40, m; 9 m = max(x, y); 10 cout << " x, y of max is " << m << endl; 11 m = max(x, y, z); 12 cout << " x, y,z of max is " << m << endl; 13 return 0; 14 } 15 16 int max(int a, int b, int c) 17 { 18 if(b > a) a = b; 19 if(c > a) a = c; 20 return a; 21 }
在使用带有默认参数的函数时有两点要注意:
(1) 如果函数的定义在函数调用之前,则应在函数定义中给出默认值。如果函数的定义在函数调用之后,则在函数调用之前需要有函数声明,此时必须 在函数声明中给出默认值,在函数定义时可以不给 出默认值
(2) 一个函数不能既作为重载函数,又作为有默认 参数的函数。因为当调用函数时如果少写一个参数,系统无法判定是利用重载函数还是利用默认参数的函数,出现二义性,系统无法执行。