C++함수와 클래스

기본 인자

인자를 생략했을 때 기본값을 사용하는 C++ 기본 인자의 규칙과 선언 위치를 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

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 의미를 흐릴 수 있음

주의할 점

기본 인자와 오버로딩을 함께 섞으면 어떤 함수가 선택되는지 읽기 어려워질 수 있습니다. "편의성" 때문에 인터페이스가 더 모호해지지 않는지 함께 봐야 합니다.