디폴트 매개변수
디폴트 매개변수란 매개변수에 기본적으로 설정되어 있는 값을 의미한다.
즉, 함수의 호출 시 Argument 가 전달되지 않았을 때 매개변수에 저장될 값을 미리 선언하는 것이다.
코드로 보면 좀 더 이해가 빠를 수 있을 것이다.
#include <iostream>
int func(int a = 10)
{
return a+5;
}
int main()
{
std::cout << func() << std::endl;
std::cout << func(10) << std::endl;
return 0;
}
위 코드에서 func()과 func(10)은 같은 값을 지닌다.
func()는 Argument가 전달되지 않았으므로 디폴트 매개변수가 사용되어 10이 전달된 것으로 간주하는 것이다.
디폴트 매개변수를 여러 개 사용하는 것도 가능하다.
#include <iostream>
int func(int a = 5, int b = 15)
{
return a + b;
}
int main()
{
std::cout << func() << std::endl;
std::cout << func(5) << std::endl;
std::cout << func(5, 15) << std::endl;
std::cout << func(35, 25) << std::endl;
return 0;
}
func()는 인자가 아무것도 전달되지 않았으므로 a에는 5, b에는 15가 전달된 것으로 간주한다.
func(5)는 a는 5가 전달되었고 b에는 인자가 전달되지 않았으므로 15가 전달된 것으로 간주한다.
func(5, 15)는 a에는 5가 전달되었고 b에는 15가 전달되었다.
func(35, 25)는 a에는 35가 전달되었고 b에는 25가 전달되었다.
따라서 위 코드의 결과는 다음과 같다.
부분적 디폴트 매개변수 설정
아래 코드와 같이 함수의 매개변수를 일부분만 디폴트 매개변수로 설정하는 것도 가능하다.
int func(int a, int b = 5, int c = 15) { }
하지만 아래 코드와 같이 오른쪽의 매개변수의 디폴트 값을 비우는 형태로는 사용할 수 없다.
int func(int a = 5, int b = 15, int c) { }
부분적으로 디폴트 매개변수를 설정할 때에는 반드시 오른쪽 매개변수의 디폴트 값부터 채우는 형태로 정의해야 한다.
따라서 아래 정의들은 모두 유효하다.
int func(int a = 0, int b = 5, int c = 15) { }
int func(int a, int b = 5, int c = 15) { }
int func(int a, int b, int c = 15) { }
int func(int a, int b, int c) { }
이렇게 되는 이유는 함수에 전달되는 인자가 왼쪽에서부터 채워지기 때문이다.
'C++ > C++ 문법' 카테고리의 다른 글
[C++] 인라인 함수 (inline function) (0) | 2024.03.01 |
---|---|
[C++] 이름공간 (namespace) (0) | 2024.02.10 |
[C++] 함수 오버로딩 (0) | 2024.02.09 |
[C++] 지역변수 선언에 있어서 C언어와의 차이 (0) | 2024.01.31 |
[C++] 입출력 방식 (std::cout, std::cin) (0) | 2024.01.25 |