再有默认参数的函数中,一般我们都把默认参数放在声明处而不是定义处。
如果声明和定义都有默认参数,编译器将会报错。
调用含有默认实参的函数时,我们可以包含参数,也可以省略。
有默认参数的函数,我们可以不带参数调用:
所以,在类里面特别要注意,构造函数如果没有参数,此时又存在有所有参数都有默认参数的构造函数,也将会报错。
如果是声明的时候没有默认参数,而定义的时候有默认参数(声明出现在定义前),编译器将不能识别默认参数。
但是如果有默认参数函数定义出现在声明前面,默认参数则有效。
这个例子说明了,函数的默认参数,编译器是选择它第一次看到的声明为准的,定义是一种特殊的声明。
那么,我们应该采取,声明写默认参数,定义不写默认参数的建议。
如果函数有默认参数了,那么该默认参数后面的参数,必须也有默认值。
例如一个函数有三个参数,顺序编排为1 ,2 ,3,且都有默认参数,调用的时候,只可以省略尾部的参数。
在这个例子中,不可以省略第一个参数或者1,2都省略,也不可以只省略2的参数,但是可以只写1的参数,省略2,3的参数,也可以只写1,2,省略3的参数。
局部变量不能作为默认参数也需要注意。