1.c++规定默认参数必须从函数参数的右边向左边使用,如下:
正确声明:
void fun1(int a, int b=10);
void fun2(int a, int b=10, int c=20);
错误声明:
void fun3(int a=5, int b, int c);
void fun4(int a, int b=5, int c);
2.默认参数不能在声明和定义中同时出现,如下:
错误使用示范:
声明:
void fun1(int a=10);
定义:
void fun1(int a=10){......}
正确使用示范:
声明:
void fun2(int a=10);
定义:
void fun2(int a){......}
或者
声明:
void fun2(int a);
定义:
void fun2(int a=10){......}
3.带默认参数的函数的声明、定义及使用顺序问题
①函数先声明后定义再使用;也可以无声明只定义后使用。
若有声明则函数的声明一般(习惯)放在所有函数的定义前,如下示例:
void fun1(int a=10);
void fun2(int a, int b=20);
void fun1(int a){......}
void fun2(int a, int b){......}
若无声明部分,则函数定义部分放在使用的函数体前,如下示例:
void fun3(int a=10){......}
void fun4(int a=20)
{
fun3();
}
void main()
{
fun4();
}
②若在声明和定义间使用函数,需将默认参数放在声明中,这样当使用默认参数时编译能通过,示例:
void fun1(int a=10);
void main()
{
fun1();
}
void fun1(int a){......}
③若有声明且在函数定义的后面使用该函数,则默认参数可以放在声明中或定义中。
④一般情况下我们选择将默认参数放在函数定义中,这是我们设计函数的初衷,以及函数在移转过程中的可读性问题。