본문 바로가기

잡지식/C++ 연습 문제 풀이

C++ 문제 풀이 1-3

문제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