디폴트 매개변수를 가진 함수에 대해 공부해보았다
#include <iostream>
int function(int a = 5) {
return a + 1;
}
int main(void) {
std::cout << function() << std::endl; // 6
std::cout << function(3) << std::endl; // 4
return 0;
}
디폴트 매개변수란?
전달되지 않은 인자를 대신하기 위한 기본 값이 설정되어 있는 변수이다
std::cout << function() << std::endl;이렇게 실행하게 되면 디폴트 값이 5가 a에 들어가 실행결과가 6이 된다.
std::cout << function(3) << std::endl;이렇게 실행하게 되면 인자인 3이 a에 들어가 실행결과가 4가 된다.
#include <iostream>
int function(int a = 5, int b) {
return a + b + 1;
}
int main(void) {
std::cout << function(10, 2) << std::endl;
std::cout << function(3) << std::endl;
return 0;
}
std::cout << function(10, 2) << std::endl;해당 코드는 정상적으로 13이 출력 된다.
std::cout << function(3) << std::endl;하지만 이 코드에서 문제가 발생한다.
이유는 매개변수 중 a에만 디폴트 값이 들어있기 때문이다.
인자로 들어간 3은 a값에 들어가게되고, b값은 초기화되지 않았기 때문에 문제가 된다.
#include <iostream>
int function(int a, int b = 5) {
return a + b + 1;
}
int main(void) {
std::cout << function(10, 2) << std::endl;
std::cout << function(3) << std::endl;
return 0;
}
디폴트 값을 주려면 뒤에 있는 변수에 값을 주어야 문제가 발생하지 않는다. 이렇게 디폴트 값을 주면 인자가 한 개인 경우와 두 개인 경우 모두 정상적으로 실행되기 때문이다.
방과후 시간에 C++을 복습하며,
배웠던 개념을 정리 할 수 있어서 좋았다!