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/
'C · C++' 카테고리의 다른 글
[C++] 템플릿(Template) 함수 (0) | 2022.07.27 |
---|---|
[C++] 함수 오버로딩(Overloading) (0) | 2022.07.23 |
[C++] 함수의 선언과 구현부 분리 (0) | 2022.07.13 |
[C++] 생성자와 초기화 리스트 (Initializer List) (0) | 2022.05.26 |
[C++] 초기화 (Initialization) (0) | 2022.05.25 |