httpinterpret httpinterpret - 4 months ago 12
C++ Question

Default value of function parameter

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?

Answer

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.

Specifically, suppose:

lib.h

int Add(int a, int b);

lib.cpp

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

test.cpp

#include "lib.h"

int main() {
    Add(4);
}

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:

lib.h

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