DefaulfValue3.cpp에 정의된 함수 BoxVolume를 '매개변수의 디폴트 값 지정' 형태가 아닌, '함수 오버로딩'의 형태로 재구현
단, main 함수는 변경하지 않아야 하며, 실행결과도 동일해야한다.
#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 length, int width , int height );
int BoxVolume(int length, int width );
int BoxVolume(int length);
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;
}
int BoxVolume(int length, int width)
{
return length * width * 1;
}
int BoxVolume(int length)
{
return length * 1 * 1;
}
다음과 같은 형태로의 오버로딩은 문제가 있다.
어떤 문제가 있는가?
int SimpleFunc(int a = 10)
{
return a+1;
}
int SimpleFunc(void)
{
return 10;
}
=> 인자를 전달하지 않을 시 두 함수의 호출 조건을 모두 만족하기 때문에 컴파일 에러가 난다.