💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# C++ 函数中的默认参数 > 原文: [https://beginnersbook.com/2017/08/cpp-default-arguments/](https://beginnersbook.com/2017/08/cpp-default-arguments/) 在调用函数时不提供任何参数或仅提供少量参数时,将使用默认参数。在编译程序期间使用默认参数。例如,假设您有一个[用户定义的函数](https://beginnersbook.com/2017/08/cpp-functions/)`sum`声明如下:`int sum(int a=10, int b=20)`,现在在调用此函数时,您不提供任何参数,简称为`sum()`;那么在这种情况下结果将是 30,编译器使用函数签名中声明的默认值 10 和 20。如果你只传递一个这样的参数:`sum(80)`那么结果将是 100,使用传递的参数 80 作为第一个值,20 个从默认参数中获取。 ## 示例:C++ 中的默认参数 ```cpp #include <iostream> using namespace std; int sum(int a, int b=10, int c=20); int main(){ /* In this case a value is passed as * 1 and b and c values are taken from * default arguments. */ cout<<sum(1)<<endl; /* In this case a value is passed as * 1 and b value as 2, value of c values is * taken from default arguments. */ cout<<sum(1, 2)<<endl; /* In this case all the three values are * passed during function call, hence no * default arguments have been used. */ cout<<sum(1, 2, 3)<<endl; return 0; } int sum(int a, int b, int c){ int z; z = a+b+c; return z; } ``` **输出:** ```cpp 31 23 6 ``` ## 默认参数的规则 正如您在上面的示例中所看到的,我在函数声明期间仅为两个参数`b`和`c`分配了默认值。您可以为所有参数或仅选定的参数指定默认值,但在仅为某些参数指定默认值时,请记住以下规则: > **如果为参数指定默认值,则必须为后续参数分配默认值,否则将出现编译错误。** **例如:**让我们看一些有效和无效的案例。 **有效:**以下函数声明有效: ```cpp int sum(int a=10, int b=20, int c=30); int sum(int a, int b=20, int c=30); int sum(int a, int b, int c=30); ``` **无效:**以下函数声明无效: ```cpp /* Since a has default value assigned, all the * arguments after a (in this case b and c) must have * default values assigned */ int sum(int a=10, int b, int c=30); /* Since b has default value assigned, all the * arguments after b (in this case c) must have * default values assigned */ int sum(int a, int b=20, int c); /* Since a has default value assigned, all the * arguments after a (in this case b and c) must have * default values assigned, b has default value but * c doesn't have, thats why this is also invalid */ int sum(int a=10, int b=20, int c); ```