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; }
};