C++ 디폴트 매개변수(Default Parameter)

프로그래밍/C++ 2019.08.17 댓글 Plorence

디폴트 매개변수(Default Parameter)

디폴트 매개변수는 C++에서 새로 추가된 내용입니다.
디폴트 매개변수는 함수 호출에서 실제 매개변수를 생략했을 경우에 실제 매개변수 대신 사용되는 값입니다.

#include <iostream>
int func(int num1 = 1, int num2 = 2) {
    return num1 + num2;
}
int main(void) {
    int result = func();
    int result1 = func(1, 2);
}

func()라는 함수는 매개변수 num1와 num2를 더해서 리턴하는 함수입니다.

첫 번째 함수 호출 후 리턴 값(변수 result의 값)은 3이고

두 번째 함수 호출 후 리턴 값도 동일하게 3입니다.

 

디폴트 매개변수는 말그대로 '디폴트'입니다.

함수호출을 하는데 인자를 넘겨주지 않았다면, 디폴트 매개변수로 지정한 값으로 대체합니다.

즉 함수 Func은 호출시에 인자를 넘겨주지 않았으므로 num1은 1, num2는 2의 값을 가지는 것입니다.

 

디폴트 매개변수 사용할때 주의할 점

디폴트 매개변수를 사용할 때 규칙이 있습니다.
뭐냐면 디폴트 매개변수를 사용하려면 디폴트 매개변수가 아닌 가장 오른쪽에 있는 매개변수 이후부터 써야 합니다.

#include <iostream>
int func1(int num1 = 1, int num2) { //컴파일에러
    return num1 + num2;
}
int func2(int num1, int num2 = 1) { //문제 없다.
    return num1 + num2;
}
int main(void) {
}

위의 예제 코드처럼 디폴트 매개변수는 항상 가장 마지막에 있는 매개변수 이후로 부터 사용하여야 합니다.

 

그리고 호출 대상이 모호하다면 불가능합니다.

int func1(int num1) {
	return num1 * num1;
}
int func1(int num1, int num2 = 1) {
	return num1 + num2;
}

int main(void) {

	func1(1); //컴파일 에러
}

위처럼 인자가 1개인 함수를 호출할 것인지, 2개인 함수를 호출할 것인지 모호하기 때문에 컴파일 에러가 발생합니다.

댓글