C++中可以在函数声明时为参数提供一个默认值,当函数调用时没有提供参数的值,则使用默认值:

函数的前向声明中提供了参数的默认值后,在函数的定义中就没有必要提供参数的默认值了。
参数的默认值必须在函数声明中指定
问题:
函数定义中是否可以出现参数的默认值?当函数声明和定义中的参数默认值不同时会发生什么?

示例程序如下:声明时和定义时的默认参数不一样

编译结果如下:

因此,在定义的时候不给出默认值就可以了。只在声明的时候给出默认值。
如果在声明时不给默认参数,而是在定义时给默认参数,如下所示:

编译报错:

函数默认参数的规则:

在C++中可以为函数提供占位参数:

C++为什么要提供这种特性呢?这是为了兼容C程序中不规范的写法:

兼容C语言中不规范的写法例如:C语言中定义了int f(),调用时用的是f(1,2),这在C语言中可以编译过去,但是在C++中是编译不过去的,为了能编译过去,也就是兼容以前的C程序,因此,提供了占位符这个特性。
将占位符和默认参数联合使用就可以兼容C语言中的不规范写法了,如下:

小结:
C++中支持函数参数的默认值
如果函数调用时没有提供参数值,则使用默认值
参数的默认值必须从右向左提供
函数调用时使用了默认值,则后续参数必须使用默认值
C++中支持占位参数,用于兼容C语言中的不规范写法
 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号