一、函数参数的默认值
C++中可以在函数声明时为参数提供一个默认值,当函数调用时没有提供参数的值,则使用默认值;参数的默认值必须在函数声明中指定,若函数定义中出现参数的默认值,编译器就报错;当函数声明和定义中的参数默认值不同时,编译器也会报错。函数参数默认值的使用如图1所示:
![6552342f30528548a7fd8ab95bc6ffcc.png](https://i-blog.csdnimg.cn/blog_migrate/bb1e00c74c2ac5ea633f7f850f6d0356.jpeg)
图1
函数默认参数的规则是默认必须从右向左提供;函数调用是使用了默认值,则后续参数必须使用默认值。如图2所示的代码,当参数变量y使用了默认值,则参数变量z必须使用默认值。
![bc707e480a1a27382bbe840612676163.png](https://i-blog.csdnimg.cn/blog_migrate/4d29ebe5fcb8241c656602222bb3b52b.jpeg)
图2
二、函数占位参数
占位参数只有参数类型声明,而没有参数名声明,一般情况下,在函数体内部无法使用占位参数;如图3代码所示:
![9a1a849fa76626ab8f7d1563317b1bf5.png](https://i-blog.csdnimg.cn/blog_migrate/2eb6ad0d28f5d3e55f3f34d8daaa5edd.jpeg)
图3
函数占位参数与默认参数结合起来使用,兼容C语言程序中可能出现的不规范写法。如图4代码,用C语言编译器编译是可以编译通过的;而用C++编译器编译是会报错的。为了少量的修改代码且不引进bug,就得使用函数占位参数和默认参数。修改后的代码如图5所示。
![3c4dcf32e9046594aa8e197302d75067.png](https://i-blog.csdnimg.cn/blog_migrate/b6ddbd39be67f2cb46b31df4a680b6bc.jpeg)
图4
![a54bcc1f43a8993f1ebbc743e8310916.png](https://i-blog.csdnimg.cn/blog_migrate/e969b9e5cccb2dbfca8ef5b9b6008aae.jpeg)
图5