[C++] 01 - 3 : 매개변수의 디폴트값(Default Value)

2023. 3. 13. 18:04Chlln's Code/C++

매개변수에 설정하는 "디폴트값"의 의미

DefaultValue1.cpp

#include <iostream>
using namespace std;

int Adder(int num1 = 1, int num2 = 2) {
	return num1 + num2;
}

int main(void) {
	cout << Adder() << endl		
		<< Adder(5) << endl
		<< Adder(3, 5) << endl;

	return 0;
}
  • 4행 : Adder 함수의 디폴트값으로 1과 2가 설정되었다.
  • 9행 : Adder 함수를 호출하면서 인자를 전달하지 않았으니, 1과 2가 전달된 것으로 간주된다.
  • 10행 : Adder 함수를 호출하면서 인자를 하나만 전달하고 있다.
    이러한 경우 인자는 첫 번째 매개변수로 전달된다.
    따라서 두 번째 매개변수 num2에는 2가 전달된 것으로 간주된다.
  • 11행 : Adder 함수를 호출하면서 두 개의 인자를 직접 전달하였다.
    이러한 경우 매개변수의 디폴트값은 의미를 갖지 않는다.

출력 결과

3
7
8

디폴트값은 함수의 선언부에만 표현하면 됩니다.

DefaultValue2.cpp

#include <iostream>
using namespace std;

int Adder(int num1 = 1, int num2 = 2);

int main(void) {
	cout << Adder() << endl
		<< Adder(5) << endl
		<< Adder(3, 5) << endl;

	return 0;
}

int Adder(int num1 = 1, int num2 = 2) {
	return num1 + num2;
}

출력 결과

3
7
8

부분적 디폴트값 설정

DefaultValue3.cpp

#include <iostream>
using namespace std;

int BoxVolume(int length, int width = 1, int height = 1);

int main(void) {
	cout << "[3, 3, 3] : " << BoxVolume(3, 3, 3) << endl
		<< "[5, 5, D] : " << BoxVolume(5, 5) << endl
		<< "[7, D, D] : " << BoxVolume(7) << endl;
//	cout << "[D, D, D] : " << BoxVolume() << endl;

	return 0;
}

int BoxVolume(int length, int width, int height) {
	return length * width * height;
}
  • 4행 : 첫 번째 매개변수에는 디폴트값이 지정되지 않았으므로, BoxVolume 함수를 호출할 때는 반드시 하나 이상의 인자를 전달해야 한다.
  • 7~9행 : 모두 유효한 함수 호출문이다.
    전달되는 인자는 왼쪽에서부터 채워지고 부족한 부분은 디폴트값이 대신 전달된다.
  • 10행 : 모든 매개변수에 디폴트값이 지정된 것이 아니기 때문에, 인자를 전달하지 않는 형태의 함수 호출은 컴파일 에러로 이어진다.

출력 결과

[3, 3, 3] : 27
[5, 5, D] : 25
[7, D, D] : 7