본문 바로가기

C++ 기초 1

[C++] 1-11 함수의 디폴트 매개변수

 
함수의 디폴트 매개변수

   C++에서는 함수의 매개변수를 디폴트(default) 값으로 지정할 수 있다. 디폴트 매개변수란 함수의 원형 선언 및 함수의 정의에서 매개변수에 값을 지정해 두는 것을 말한다. 함수의 매개변수를 디폴트 값으로 지정해 두면 함수 호출 시 매개변수 값을 넘겨주지 않아도 디폴트로 지정된 매개변수 값이 피 호출 함수로 넘어가게 된다.

 

예제 1
#include <iostream>
using namespace std;
void sub(int a = 10, int b = 20, int c = 30);	//인수의 디폴트 값 지정

int main()
{
	sub();			//매개변수 모두를 디폴트 값으로 지정
	sub(5);			//매개변수 b, c를 디폴트 값으로 지정
	sub(5, 15);		//매개변수 c를 디폴트 값으로 지정
	sub(5, 15, 25); //디폴트 값 사용 안함
	return 0;
}

void sub(int a, int b, int c)		//함수의 정의
{
	cout << "a=" <
결과
a=10,b=20,c=30
a=5,b=20,c=30
a=5,b=15,c=30
a=5,b=15,c=25
※ 함수를 main()함수 뒤에서 정의하는 경우, 함수의 원형을 선언해 두어야 한다. 이때 함수의 매개변수를 디폴트 값으로 지정하려면 함수의 원형 선언에서 매개변수를 디폴트 값으로 지정해야 한다.
※ main() 함수에서의 2번째 함수 호출문 sub(5);는 매개변수 a만 5로 피 호출 함수에 넘겨 준다. 따라서 인수 b와 c는 디폴트 값 20과 30이 피 호출 함수로 전달되기 때문에 sub(50;는 sub(5, 20, 30);와 동일하다. 
예제 2
#include <iostream>
using namespace std;
void sub(int a = 10, int b = 20, int c = 30)	//함수의 정의, 인수의 디폴트 값 지정
	{
	cout << "a=" << a << ",b=" << b << ",c=" << c << endl;
	}


int main()
{
	sub();			//매개변수 모두를 디폴트 값으로 지정
	sub(5);			//매개변수 b, c를 디폴트 값으로 지정
	sub(5, 15);		//매개변수 c를 디폴트 값으로 지정
	sub(5, 15, 25); //디폴트 값 사용 안함
	return 0;
}
결과
a=10,b=20,c=30
a=5,b=20,c=30
a=5,b=15,c=30
a=5,b=15,c=25
※ 함수를 main() 함수 앞에서 정의하는 경우, 함수의 원형을 선언할 필요가 없으며, 이때 함수의 매개변수를 지정해야 한다. 
참고

1. 장인성 외 5인, (초보자도 쉽게 따라 할 수 있는) C++프로그래밍, 광문각, 2017.02.13