[C++] 문제 01 - 3 [매개변수의 디폴트값]
2023. 3. 13. 18:21ㆍChlln's Code/C++
문제 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)처럼 매개변수를 갖고 있지 않은 함수를 호출하려는 것인지 매우 모호함.
'Chlln's Code > C++' 카테고리의 다른 글
[C++] 01 - 5 : 이름공간(namespace)에 대한 소개 (0) | 2023.03.13 |
---|---|
[C++] 01 - 4 : 인라인(inline) 함수 (0) | 2023.03.13 |
[C++] 01 - 3 : 매개변수의 디폴트값(Default Value) (0) | 2023.03.13 |
[C++] 문제 01 - 2 [함수 오버로딩] (0) | 2023.03.13 |
[C++] 01 - 2 : 함수 오버로딩(Function Overloading) (0) | 2023.03.13 |