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

 

函数的前向声明中提供了参数的默认值后,在函数的定义中就没有必要提供参数的默认值了。

参数的默认值必须在函数声明中指定

问题:

  函数定义中是否可以出现参数的默认值?当函数声明和定义中的参数默认值不同时会发生什么?

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

 

编译结果如下:

 

因此,在定义的时候不给出默认值就可以了。只在声明的时候给出默认值。

如果在声明时不给默认参数,而是在定义时给默认参数,如下所示:

 

编译报错:

 

函数默认参数的规则:

 

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

 

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

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

 将占位符和默认参数联合使用就可以兼容C语言中的不规范写法了,如下:

 

小结:

  C++中支持函数参数的默认值

  如果函数调用时没有提供参数值,则使用默认值

  参数的默认值必须从右向左提供

  函数调用时使用了默认值,则后续参数必须使用默认值

  C++中支持占位参数,用于兼容C语言中的不规范写法

 

posted on 2018-08-22 21:10  周伯通789  阅读(145)  评论(0编辑  收藏  举报