[열혈 C++ 프로그래밍] 01-03 매개변수의 디폴트 값

Yerin·2023년 4월 19일
0

문제 1

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;

}

문제 2

다음과 같은 형태로의 오버로딩은 문제가 있다.
어떤 문제가 있는가?

int SimpleFunc(int a = 10)
{
	return a+1;
}

int SimpleFunc(void)
{
	return 10;
}

=> 인자를 전달하지 않을 시 두 함수의 호출 조건을 모두 만족하기 때문에 컴파일 에러가 난다.

profile
재밌는 코딩 공부

0개의 댓글