본문 바로가기

C, C++

함수 디폴트 인수

함수를 정의할 때 인수의 디폴트 값을 정해줄 수 있습니다.

void Func(int a = 2) {//디폴트 인수 a의 값이 2인 함수
} 

Func(4);//인수를 4를 전달해서 a는 4가 됩니다. 
Func();//인수를 생략해서 디폴트 인수인 2가 됩니다.

 

인수를 여러 개 넣고 싶을 때 어떤 건 디폴트 인수로 하고 어떤 건 그냥 인수로 할 수도 있는데, 이는 규칙이 있습니다. 반드시 디폴트 인수 중의 하나라도 그냥 인수들의 앞에 오면 안 됩니다.

void Func(int a = 2, int b) {
}

Func(3);//a에 3이 전달될지, a가 디폴트 인수니까 b에 3이 전달될지 몰라 오류가 납니다.

void Func(int a, int b = 2) {//이렇게 써야 합니다.
}

Func(3);//a에 3이 전달 되고 b는 디폴트 인수인 2가 전달 됩니다.

그리고 함수를 선언하고 정의할 때 디폴트 인수를 선언 정의 둘 다 표시하면 중복되어 오류가 납니다. 함수를 선언 및 정의할 경우에는 선언 부분에만 디폴트 인수를 표시해주어야 합니다.

void Func(int a = 2);
void Func(int a = 2) {//디폴트 인수 중복 오류
}

void Func(int a) {//이렇게 써야 합니다.
}

함수 선언 부분에서 디폴트 인수를 지정할 때 인수 이름을 생략할 경우 이렇게 할 수도 있습니다.

void Func(int = 2); 
void Func(int a) {
}

'C, C++' 카테고리의 다른 글

포인터 배열과 배열 포인터  (0) 2019.12.08
가변 인수 함수  (0) 2019.12.07
함수 오버로딩  (0) 2019.12.03
변수, 함수 선언과 정의  (0) 2019.12.03
변수 종류  (0) 2019.12.03