문제1
예제 DefaultValue3.cpp 에 정의된 함수 BoxVolume을 '매개변수의 디폴트 값 지정' 형태가 아닌, '함수 오버로딩'의 형태로 재 구현해보자. 물론 main 함수는 변경되지 않아야하며, 실행 결과도 동일해야한다.
//DefaultValue3.cpp
#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,D] : " << BoxVolume(5, 5) << std::endl;
std::cout << "[7,D,D] : " << BoxVolume(7) << std::endl;
// std::cout << "[D,D,D] : " << BoxVolume() << std::endl;
return 0;
}
int BoxVolume(int length, int width, int height){
return length*width*height;
}
풀이
#include <iostream>
int BoxVolume(int a, int b, int c) {
return a * b * c;
}
int BoxVolume(int a, int b) {
return a * b*1;
}
int BoxVolume(int a) {
return a*1*1;
}
int main(void) {
std::cout << "[3,3,3] : " << BoxVolume(3, 3, 3) << std::endl;
std::cout << "[5,5,D] : " << BoxVolume(5, 5) << std::endl;
std::cout << "[7,D,D] : " << BoxVolume(7) << std::endl;
// std::cout << "[D,D,D] : " << BoxVolume() << std::endl;
return 0;
}
문제2
다음과 같은 형태로의 함수 오버로딩은 문제가 있다.
어떠한 문제가 있는지 설명해보자
int SimpleFunc(int a=10)
{
return a+1;
}
int SimpleFunc(void)
{
return 10;
}
풀이
위의 오버로딩은 SimpleFunc()로의 매개인자를 넘겨주지않는 호출 방식으로 함수가 호출된다면
두개 모두 호출이 가능하기 때문에 어떤 함수를 호출해야 할지 모르므로 오류가 발생합니다.
윤성우 열혈 C++ 프로그래밍
32p 문제 01-3
'잡지식 > C++ 연습 문제 풀이' 카테고리의 다른 글
스터디 3주차 직테/필기 테스트/ 알고리즘 테스트 문제 (0) | 2019.12.28 |
---|---|
C++ 문제풀이 1-2 (0) | 2019.12.16 |
C++ 문제 풀이 1-1 (0) | 2019.12.16 |