[C++ 문법] '디폴트 매개변수'
'디폴트 매개변수'란 말그대로 매개변수의 디폴트 값을 지정할 수 있다는 것을 의미합니다.
간단한 시나리오로 예를 들어보겠습니다.
// 2013년에 A개발자가 만든 함수(라이브러리)
int CalcLayout(int nWidth, int nHeight) {
return nWidth + nHeight;
}
// 2013년에 B개발자가 해당 함수(라이브러리)를 사용합니다.
void main() {
CalcLayout(25, 50);
}
시간이 흐른 후, A개발자는 이전에 만들었던 함수(라이브러리)를 수정하려고 합니다.
// 2013년에 A개발자가 만든 함수(라이브러리) -> A개발자는 2019년에 해당 함수(라이브러리)를 수정하려합니다.
int CalcLayout(int nWidth, int nHeight, int nType = 0) {
return nWidth + nHeight + nType;
}
// 2013년에 B개발자가 해당 함수(라이브러리)를 사용하는 코드를 작성했지만 에러가 나지 않습니다.
// 원형이 변경되었지만, 새로 추가된 매개변수에 디폴트 값을 지정함으로써 이전에 작성된 코드의 에러를 막습니다.
void main() {
CalcLayout(25, 50);
}
함수의 원형을 변경했지만, 이전에 B개발자가 작성했던 코드의 안정성은 보장받을 수 있습니다.
'디폴트 매개변수'는 위와 같이 꼭 필요한 경우가 아니라면, 되도록 지양하는 것이 좋습니다. '디폴트 매개변수'를 생략해 호출할 수 있으므로 사용자측에서 함수의 원형을 파악하기 힘들뿐만 아니라, 어떤 함수의 원형이 호출되어야하는지 모호해지는 상황이 발생할 수 있기 때문입니다.
'Programming > C C++' 카테고리의 다른 글
[C++ 문법] 'mutable' 예약어와 'const_cast<>' 형변환 연산자 (0) | 2019.05.20 |
---|---|
[C] 'inline 함수' (0) | 2019.05.19 |
[C++ 문법] '템플릿(template)' (0) | 2019.05.17 |
[C++ 문법] '함수 객체(Functor)' (0) | 2019.05.17 |
[C++ 문법] '-> 연산자 오버로딩'과 '스마트 포인터' (0) | 2019.05.16 |
댓글
이 글 공유하기
다른 글
-
[C++ 문법] 'mutable' 예약어와 'const_cast<>' 형변환 연산자
[C++ 문법] 'mutable' 예약어와 'const_cast<>' 형변환 연산자
2019.05.20 -
[C] 'inline 함수'
[C] 'inline 함수'
2019.05.19 -
[C++ 문법] '템플릿(template)'
[C++ 문법] '템플릿(template)'
2019.05.17 -
[C++ 문법] '함수 객체(Functor)'
[C++ 문법] '함수 객체(Functor)'
2019.05.17