函数参数默认值

2021-12-29 00:00:00 syntax c++ optional-parameters

1.

int Add (int a, int b = 3);
int Add (int a, int b)
{

}

2.

int Add (int a, int b);
int Add (int a, int b = 3)
{

}

两者都有效;这是标准方式,为什么?

Both work; which is the standard way and why?

推荐答案

如果你把声明放在一个头文件中,而定义在一个单独的 .cpp 文件中,并且 #include 来自不同 .cpp 文件的标题,您将能够看到差异.

If you put the declaration in a header file, and the definition in a separate .cpp file, and #include the header from a different .cpp file, you will be able to see the difference.

具体来说,假设:

int Add(int a, int b);

lib.cpp

int Add(int a, int b = 3) {
   ...
}

test.cpp

#include "lib.h"

int main() {
    Add(4);
}

test.cpp的编译不会看到默认的参数声明,会报错.

The compilation of test.cpp will not see the default parameter declaration, and will fail with an error.

为此,默认参数定义通常在函数声明中指定:

For this reason, the default parameter definition is usually specified in the function declaration:

int Add(int a, int b = 3);

相关文章