본문 바로가기

전자 공학/C언어 C++

[C++ 독학하기] 6. 디폴트 매개변수란?

반응형

안녕하세요. 취업한 공대누나입니다.

오늘은 디폴트 매개변수의 개념에 대해서 알아보고 소스 코드에서 차근차근 보도록 하겠습니다.


1. 디폴트 매개변수

 

우리 함수에 대해 공부를 할 때 함수를 호출하던 부분을 기억하시나요?

함수를 호출하기 위해서는 매개변수의 값을 적어야 합니다.

예를 들어서 Add(1,2);와 같은 형식으로 말이죠.

하지만 C++의 경우 디폴트 매개변수라는 개념이 있습니다.

아래 소스부터 보도록 하겠습니다.

default_test라는 함수의 test라는 매개변수의 초기값이 100임을 알 수 있습니다.

이 함수는 해당 매개변수를 그대로 리턴을 하는 함수입니다.

첫번재 출력 구문을 보면 실인수를 생략한 것을 볼 수 있습니다. 

결과창에는 디폴트 값인 100이 그대로 출력되게 됩니다.

즉 이와 같이 매개변수에 디폴트 값을 선언해준 함수는 호출할 때 실인수를 생략한 채 호출할 수 있다는 것이 바로 디폴트 매개변수의 개념입니다.

하지만 두번째 출력 구문을 보시면 아시다시피 우리가 매개변수의 값을 넣어줄 수도 있습니다.

디폴트는 말 그대로 기본 값을 지정해놓은 것일 뿐이니까요.

 

여기서 주의할 점이 호출하는 부분만 봐서 함수의 원형을 정확히 알 수 없다는 것입니다.

C++의 주요 특징 중 하나입니다.


2. 매개변수가 두 개일 때 주의할 점

매개변수가 두개, 세개일 때도 디폴트 매개변수를 적용할 수 있을까요?

네 적용할 수 있습니다.

그런데 주의사항이 있습니다.

모두 다 디폴트 매개변수를 쓰는게 아닌 이상 규칙이 존재하는데요.

디폴트 값은 반드시 오른쪽 매개변수부터 기술해야 한다는 것입니다.

오른쪽 아래 그림을 보시면 나와있듯이 왼쪽부터 기술했더니

기본 인수가 매개 변수 목록의 끝에 없다는 오류가 나타나는 것을 확인할 수 있습니다.

오른쪽부터 기술 왼쪽부터 기술하면 에러

 

디폴트 매개변수는 전방 선언과 함수 정의가 있는 함수의 경우 둘 중 하나에서만 선언할 수 있습니다.

또한 중간에 위치한 매개변수에 디폴트 값은 생략할 수 없으므로 주의하시기 바랍니다.


크게 어려운 개념은 아니지만 이 속에는 C++의 주요한 개념이 담겨 있는데요.

절대 호출자의 코드만 보고서는 함수의 원형을 알 수 없다는 것입니다.

이후에도 중요하게 다뤄질 개념 중 하나이니 숙지하고 넘어가주세요.

감사합니다.

반응형