기본 패턴
cpp
void greet(const std::string& name, int repeat = 1);설명
- 기본 인자는 호출자가 일부 인자를 생략해도 함수를 편하게 사용할 수 있게 하는 기능입니다.
- 보통 오른쪽 끝 매개변수부터 기본값을 줄 수 있으며, 중간 인자만 건너뛰는 형태는 허용되지 않습니다.
- 인터페이스 입장에서는 오버로드 수를 줄여 줄 수 있지만, 기본값이 너무 많아지면 함수가 실제로 어떤 상황을 다루는지 흐려질 수도 있습니다.
- 헤더와 구현을 분리할 때는 기본값을 보통 선언부 한 곳에만 적고, 정의부에서 반복하지 않는 편이 안전합니다.
- 기본 인자는 함수 호출 시점에 치환된다고 생각하면, 선언 위치와 컴파일 단위가 왜 중요한지 이해하기 쉬워집니다.
짧은 예제
cpp
#include <iostream>
#include <string>
void greet(const std::string& name, int repeat = 1) {
for (int i = 0; i < repeat; i += 1) {
std::cout << "Hello, " << name << "\n";
}
}
int main() {
greet("Mina");
greet("RefDock", 2);
}빠른 정리
| 항목 | 설명 |
|---|---|
int repeat = 1 | 인자를 생략하면 1을 사용 |
| 오른쪽부터 기본값 | 뒤쪽 매개변수부터 연속으로 지정해야 함 |
| 선언부 한곳 관리 | 기본값을 여러 곳에 중복 정의하지 않는 편이 안전 |
| 장점 | 간단한 호출을 더 짧게 만들 수 있음 |
| 주의점 | 너무 많은 기본값은 API 의미를 흐릴 수 있음 |
주의할 점
기본 인자와 오버로딩을 함께 섞으면 어떤 함수가 선택되는지 읽기 어려워질 수 있습니다. "편의성" 때문에 인터페이스가 더 모호해지지 않는지 함께 봐야 합니다.