뚜둔뚜둔✩

판다의 개발일지

C · C++

[C++] Default Arguments (Parameters)

2022. 7. 16. 22:27

C++에서는 C 언어에서와 달리 default argument를 설정해두면 함수 호출 때 인자를 전달하지 않아도 함수를 호출할 수 있다.

#include <iostream>

int add(int a = 123, int b = 321)
{
    return a + b;
}

int main(void)
{
    std::cout << add(1, 2) << std::endl;
    std::cout << add(1)    << std::endl;
    std::cout << add()     << std::endl;
}
3
322
444

 

주의할 점은 default argument는 함수의 마지막 인자에서부터 연속적으로 제공되어야 한다. 즉, default 값이 주어진 인자부터는 마지막 인자까지 모두 default 값이 설정되어야 한다.

int func1(int param1, int param2 = 2);
int func2(int param1 = 1, int param2);							// error
int func3(int param1 = 1, int param2 = 2);
int func4(int param1, int param2 = 2, int param3);				// error
int func5(int param1, int param2, int param3 = 3);
int func6(int param1, int param2 = 2, int param3, int param4);	// error
test.cpp:4:31: error: missing default argument on parameter 'param2'
int func2(int param1 = 1, int param2);
                              ^
test.cpp:6:43: error: missing default argument on parameter 'param3'
int func4(int param1, int param2 = 2, int param3);
                                          ^
test.cpp:8:43: error: missing default argument on parameter 'param3'
int func6(int param1, int param2 = 2, int param3, int param4);
                                          ^
test.cpp:8:55: error: missing default argument on parameter 'param4'
int func6(int param1, int param2 = 2, int param3, int param4);
                                                      ^
4 errors generated.

 

 

References

https://en.cppreference.com/w/cpp/language/default_arguments

https://www.geeksforgeeks.org/default-arguments-c/