C++中可以在函数声明时为参数提供一个默认值,当函数调用时没有提供参数的值,则使用默认值:
函数的前向声明中提供了参数的默认值后,在函数的定义中就没有必要提供参数的默认值了。
参数的默认值必须在函数声明中指定
问题:
函数定义中是否可以出现参数的默认值?当函数声明和定义中的参数默认值不同时会发生什么?
示例程序如下:声明时和定义时的默认参数不一样
编译结果如下:
因此,在定义的时候不给出默认值就可以了。只在声明的时候给出默认值。
如果在声明时不给默认参数,而是在定义时给默认参数,如下所示:
编译报错:
函数默认参数的规则:
在C++中可以为函数提供占位参数:
C++为什么要提供这种特性呢?这是为了兼容C程序中不规范的写法:
兼容C语言中不规范的写法例如:C语言中定义了int f(),调用时用的是f(1,2),这在C语言中可以编译过去,但是在C++中是编译不过去的,为了能编译过去,也就是兼容以前的C程序,因此,提供了占位符这个特性。
将占位符和默认参数联合使用就可以兼容C语言中的不规范写法了,如下:
小结:
C++中支持函数参数的默认值
如果函数调用时没有提供参数值,则使用默认值
参数的默认值必须从右向左提供
函数调用时使用了默认值,则后续参数必须使用默认值
C++中支持占位参数,用于兼容C语言中的不规范写法