C++

[명품 C++] Default Parameter

David0903 2022. 3. 2. 21:01

위 글은 [명품 C++ Programming] 을 바탕으로 학습하여 작성한 글입니다.

 

1. 디폴트 매개변수 (Default Parameter)

 

함수가 호출될 때 매개 변수에 값이 넘어오지 않는다면, 미리 정해진 디폴트 값을 받도록 선언된 매개변수를 디폴트 매개 변수 혹은 기본 매개 변수라고 부릅니다.

 

2. 디폴트 매개 변수 선언

 

void star(int a = 5);

// 호출
star(); // 매개변수 a에 디폴트 값 5 자동 전달. star(5);와 동일
star(10); // 매개 변수 a에 10 전달
void msg(int id, string text = "Hello");

// 호출
msg(10); // id에 10, text에 "Hello" 전달.
msg(20, "Good Morning"); // id에 20, text에 "Good Morning" 전달

// 오류
msg(); // 컴파일 오류. 매개변수 id에 값이 전달되지 않음
msg("Hello"); // 컴파일 오류. 매개 변수 id에 값이 전달되지 않음

 

3. 디폴트 매개 변수에 관한 제약 조건

 

컴파일러가 함수 호출할 때 나열된 실인자 값들을 앞에서부터 순서대로 함수의 매개 변수에 전달하고, 나머지는 디폴트 값으로 전달합니다.

void calc(int a, int b=5, int c, int d=0); // 컴파일 오류
void sum(int a = 0, int b, int c) // 컴파일 오류

 

4. 함수 중복 간소화

 

디폴트 매개 변수의 최대 장점은 함수 중복을 간소화할 수 있다는 것입니다.

class Circle {
	...
public:
	Circle() { radius = 1; }
	Circle(int r) { radius = r; }
	...
	// 함수 중복 간소화
	Circle(int r = 1) { radius = r; }
};