디폴트 매개 변수란?
C++에서는 매개 변수를 선언할 때 기본 값을 설정할 수 있다. 이것을 디폴트 매개변수라고 한다.
#include <iostream>
int function(int a = 0) {
return a + 1;
}
int main(void) {
std::cout << function(11) << std::endl;
std::cout << function() << std::endl;
return 0;
}
8: 매개변수로 11을 줬고, 그대로 설정된다.
9: 매개변수를 주지 않았고, 디폴트 매개 변수인 0이 설정된다.
다양한 형태의 디폴트 매개 변수 설정
#include <iostream>
int BoxVolume(int length, int width = 1, int height = 1);
int main(void) {
std::cout << "[3, 3, 3] : "<<BoxVolume(3, 3, 3)<< std::endl;
std::cout << "[5, 5, def] : " << BoxVolume(5, 5) << std::endl;
std::cout << "[7, def, def] : " << BoxVolume(7) << std::endl;
return 0;
}
int BoxVolume(int length, int width, int height) {
return length * width * height;
}
3: 함수의 선언과 정의를 따로 할 경우, 디폴트 매개 변수는 선언 부분에 놓여져야 한다.
7: 2개의 인자가 전달되고 있는데 함수 호출 시 전달되는 인자들은 무조건 왼쪽에서부터 채워진다. 그리고 나머지가 디폴트 매개 변수로 설정된다.
디폴트 매개 변수와 함수의 오버 로딩
디폴트 매개 변수와 함수 오버 로딩을 동시에 절못 정의하는 경우가 있는데, 이런 경우는 꼭 피해야 된다.
#include <iostream>
int function(int a = 10) {
return a + 1;
}
int function(void) {
return 10;
}
int main(void) {
std::cout << function() << std::endl;
return 0;
}
3, 7: 두 함수는 이름은 같지만 매개변수의 타입이 다르므로 오버 로딩되는 데에 문제가 없다.
12: function() 호출에 3라인의 함수와 7라인의 함수중 어떤 함수가 호출될 것인가?
'컴퓨터' 카테고리의 다른 글
1-5. 이름공간(namespace)에 대한 소개 (0) | 2019.04.05 |
---|---|
1-4. 인-라인(in-line) 함수 (0) | 2019.04.05 |
1-2. 함수 오버 로딩(Function Overloading) (0) | 2019.04.04 |
1-1. printf와 scanf를 대신하는 입/출력 방식 (0) | 2019.04.04 |
함수의 매개변수로 배열 전달 (0) | 2019.04.02 |