Chlln's Code/C++
[C++] 문제 01 - 3 [매개변수의 디폴트값]
Chlln Vlln
2023. 3. 13. 18:21
문제 1
예제 DefaultValue3에 정의된 함수 BoxVolume을 '매개변수의 디폴트값 지정' 형태가 아닌, '함수 오버로딩'의 형태로 재구현해보자.
물론 main 함수는 변경하지 않아야 하며, 실행 결과도 동일해야 한다.
q01-3-1.cpp
#include <iostream>
using namespace std;
int BoxVolume(int length, int width, int height);
int BoxVolume(int length, int width);
int BoxVolume(int length);
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;
}
int BoxVolume(int length, int width) {
return length * width;
}
int BoxVolume(int length) {
return length;
}
출력 결과
[3, 3, 3] : 27
[5, 5, D] : 25
[7, D, D] : 7
문제 2
다음과 같은 형태로의 함수 오버로딩은 문제가 있다. 어떠한 문제가 있는지 설명해보자.
int SimpleFunc(int a = 10) {
return a + 1;
}
int SimpleFunc(void) {
return 10;
}
함수를 SimpleFunc()의 형식으로 호출하려고 할 때,
위의 SimpleFunc(int a = 10)처럼 디폴트값을 가진 함수를 호출하려는 것인지
아래의 SimpleFunc(void)처럼 매개변수를 갖고 있지 않은 함수를 호출하려는 것인지 매우 모호함.