[ C++ ] 매개변수의 디폴트 값

반영서·2022년 12월 28일
1

C / C++

목록 보기
1/5
post-thumbnail

매개변수의 디폴트 값

디폴트 값의 지정

C++에서는 매개변수에서 디폴트 값을 지정할 수 있다.

(java에서는 불가능)

ex)

#include <iostream>
using namespace std;

int myFunc(int num1 = 3, int num2 = 5)
{
	return num1 + num2;
}

위의 함수의 경우 매개변수에 값을 전달하지 않는다면, num1은 3, num2에는 5가 할당되게 된다.

디폴트 값은 함수 선언 부분에만 표현한다

ex)

#include <iostream>
using namespace std;

int myFunc(int num1 = 3, int num = 5);

int main(void)
{
	cout << myFunc();
	cout << myFunc();
	return 0;
}

int myFunc(int num1, num2)
{
		return num1+num2;
}

위 예시에서는 main 함수 상단부에서 함수를 선언하고, 하단부에서는 함수를 재정의하고 있다.

C++의 경우, 함수 선언문이 메인 함수보다 상단에 위치해 있지 않는다면 compile 오류가 발생한다.

부분적 디폴트 값 설정

ex)

#include <iostream>
using namespace std;

int myFunc1(int num1, int num2, int num3 = 8) { ... }     (O)

int myFunc2(int num1 = 3, int num2, int num3) { ... }.    (X)

myFunc1 함수는 오른쪽부터 디폴트 값을 채워넣고,

myFunc2 함수는 왼쪽부터 디폴트 값을 채워넣은 모습이다.

왜 왼쪽부터 채워넣은 myFunc2 함수는 컴파일 에러가 발생할까?

이유는 간단하다.

C++는 매개변수를 왼쪽부터 채워넣기 때문이다.

이미 값이 있는 매개변수에 값을 넣어버리면, 나머지에는 디폴트 값이 할당되지 않은 매개변수들이 남게 되어, 컴파일 에러가 발생하는 것이다.

profile
커지고 싶은 신입개발자

0개의 댓글