기본 매개변수

기본 매개변수

호출자가 생략한 인자는 선언에 적힌 기본값으로 채워져 기본 호출과 세부 설정 호출을 함께 처리합니다.

기본값

생략 시 자동 적용

인자를 넘기지 않으면 컴파일러가 선언에 적힌 값을 사용해 호출을 완성합니다.

int n = 10
오른쪽부터

뒤 매개변수부터 생략

기본값이 있는 매개변수 뒤에 기본값 없는 매개변수를 둘 수 없습니다.

f(a, b=0)
선언과 정의

한 곳에만 기본값 작성

선언과 정의에 중복해서 기본값을 쓰면 관리가 어렵고 오류가 생길 수 있습니다.

prototype
오버로딩

호출 모양 충돌

기본값과 오버로드가 함께 있으면 어떤 함수 호출인지 모호해질 수 있습니다.

f() ambiguity
장점자주 쓰는 설정을 짧은 호출로 표현하면서 필요한 경우만 세부 값을 넘길 수 있습니다.
기본 인자 충돌기본값이 많아지면 호출자가 어떤 값이 생략됐는지 놓치기 쉽습니다.
대안의미가 다른 조합이 많다면 구조체 옵션이나 별도 함수 이름이 더 읽기 쉬울 수 있습니다.