page contents

C++函数的默认参数详解

在C++中,定义函数时可以给形参指定一个默认的值,这样调用函数时如果没有...

C++中,定义函数时可以给形参指定一个默认的值,这样调用函数时如果没有给这个形参赋值(没有对应的实参),那么就使用这个默认的值。也就是说,调用函数时可以省略有默认值的参数。如果用户指定了参数的值,那么就使用用户指定的值,否则使用参数的默认值。

所谓默认参数,指的是当函数调用中省略了实参时自动使用的一个值,这个值就是给形参指定的默认值。下面是一个简单的示例:

    1. #include<iostream>
    2. using namespace std;
    3. //带默认参数的函数
    4. void func(int n, float b=1.2, char c='@'){
    5. cout<<n<<", "<<b<<", "<<c<<endl;
    6. }
    7. int main(){
    8. //为所有参数传值
    9. func(10, 3.5, '#');
    10. //为n、b传值,相当于调用func(20, 9.8, '@')
    11. func(20, 9.8);
    12. //只为n传值,相当于调用func(30, 1.2, '@')
    13. func(30);
    14. return 0;
    15. }

运行结果:
10, 3.5, #
20, 9.8, @
30, 1.2, @

本例定义了一个带有默认参数的函数 func(),并在 main() 函数中进行了不同形式的调用。为参数指定默认值非常简单,直接在形参列表中赋值即可,与定义普通变量的形式类似。

指定了默认参数后,调用函数时就可以省略对应的实参了。

默认参数除了使用数值常量指定,也可以使用表达式指定,例如:

  1. float d = 10.8;

  2. void func(int n, float b=d+2.9, char c='@'){

  3. cout<<n<<", "<<b<<", "<<c<<endl;

  4. }


C++规定,默认参数只能放在形参列表的最后,而且一旦为某个形参指定了默认值,那么它后面的所有形参都必须有默认值。实参和形参的传值是从左到右依次匹配的,默认参数的连续性是保证正确传参的前提。

下面的写法是正确的:

  1. void func(int a, int b=10, int c=20){ }

  2. void func(int a, int b, int c=20){ }

但这样写不可以:

  1. void func(int a, int b=10, int c=20, int d){ }

  2. void func(int a, int b=10, int c, int d=20){ }


默认参数并非编程方面的重大突破,而只是提供了一种便捷的方式。在以后设计类时你将发现,通过使用默认参数,可以减少要定义的析构函数、方法以及方法重载的数量。

本节的例子中,我们在函数定义处指定了默认参数。除了函数定义,你也可以在函数声明处指定默认参数。

attachments-2021-03-PhzMZBkP605987a8bb71c.jpg

  • 发表于 2021-03-23 14:15
  • 阅读 ( 532 )
  • 分类:C/C++开发

0 条评论

请先 登录 后评论
小柒
小柒

1046 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. Pack 1131 文章
  3. 小柒 1046 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章