- 有时多次调用同一个函数时用同样的实参,给形参一个默认值,这样形参就不必一定要从实参取值。
例:
• float area(float r =6.5);
area(); //相当于area(6.5);
如不想使形参取此默认值,则通过实参另行给出。
如有多个形参,可使每个形参有一个默认值,也可只对一部分形参指定默认值,另一部分形参不指定默认值。
- 例:
float volume(float h,float r=12.5); //只对形参r指定默认值
volume(45.6); //相当于volume(45.6,12.5)
volume(34.2,10.4) //h的值为34.2,r的值为10.4
- 例:
实参与形参的结合是从左到右顺序进行的,因此指定默认值的参数必须放在形参表列中的最右端。
- 例:
void f1(float a,int b=0,int c,char d=′a′); //不正确
void f2(float a,int c,int b=0, char d=′a′); //正确
//如果调用上面的f2函数,可以采取下面的形式:
f2(3.5, 5, 3, ′x′) //形参的值全部从实参得到
f2(3.5, 5, 3) //最后一个形参的值取默认值′a′
f2(3.5, 5) //最后两个形参的值取默认值,b=0,d=′a′
- 例:
使用带默认参数的函数时要注意:
- 如函数的定义在函数调用前,则应在函数定义中给出默认值。
- 如函数的定义在函数调用后,则在函数调用之前必须在函数声明中给出默认值,在函数定义时可以不给出默认值。
- 函数原型声明时可以不加变量名。
- 例:int max(int ,int ,int = 0);
- 一个函数不能既作为重载函数,又作为有默认参数的函数。
- 例:
int max(int a,int b,int c=0)
int max(int a,int b),
max(5,8) //出现二义性,编译报错.
- 例: