8.12 Default arguments

주홍영·2022년 3월 13일
0

Learncpp.com

목록 보기
88/199

default argument란 파라미터가 전달받는 default value이다
만약 argument로 전달받지 않은 경우 default값이 사용된다

Rule

Default arguments can only be provided for the rightmost parameters.
항상 오른쪽 부터 채워넣어야 한다. 중간 파라미터는 생략하거나 그러는게 아니고
오른쪽으로 다 몰아 넣어야 한다

void print(int x=10, int y); // not allowed

default argument가 설정되어 있으면 그 파라미터는 생략하고 argument를
전달해도 동작한다

void print(int x, int y = 10)
{
	std::cout << "int";
}

int main()
{
	print(1);
	return 0;
}

위의 코드는 이상 없다

하지만 위와 같은 속성으로 인해 ambiguous function call이 발생할 수도 있다

void print(int x);
void print(int x, int y = 10);
void print(int x, double y = 20.5);
print(1, 2); // will resolve to print(int, int)
print(1, 2.5); // will resolve to print(int, double)
print(1); // ambiguous function call

이때 컴파일 에러가 발생한다
만약 print(1)이 없으면 에러는 발생하지 않는다

profile
청룡동거주민

0개의 댓글