본문 바로가기

강의자료/C/C++

016. 함수의 오버로딩과 기본인자값

◈ 이 글은 강의를 위하여 제가 직접 작성한 내용입니다. 따라서 퍼가실 경우, 출처를 명확히 해주시기 바랍니다!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!


함수의 오버로딩이란, 서로 다른 호출 방식을 가지고 있는 같은 이름의 함수를 2개 이상 만드는 것을 말한다.
함수의 기본인자값이란, 함수에 사용되는 인자값에 기본값을 주어서 1개의 함수를 마치 2개 이상의 함수처럼 사용할 수 있게 하는 것을 말한다.
// 함수의 오버로딩.

#include  
using namespace std;

#define COST 200
int coffee(int money);
int coffee(int money, int cost);
int coffee(float money);	// coffee(100.0f);

int main( )
{
	cout << "커피 자판기에 돈을 넣으세요 : ";
	int inputMoney;
	cin>>inputMoney;
	cout << "커피 한잔의 가격을 정하세요 : ";
	int inputCost;
	cin>>inputCost;
	int cups = coffee(inputMoney, inputCost);

	cout << "커피 자판기에 " << inputMoney << "원을 넣으면 ";
	cout << cups << "잔이 나온다." << endl;

	return 0;
}

int coffee(int money)
{
	return money / COST;
}
int coffee(int money, int cost)
{
	return money / cost;
}

// 함수의 기본인자값

// 기본인자값은 선언부에만 작성한다.
// 기본인자값은 뒤에서부터 채워나가야 한다.

#include  
using namespace std;

#define COST 200
//int coffee(int money);
int coffee(int money, int cost = COST);
int coffee(float money);	// coffee(100.0f);

int main( )
{
	int cups = coffee(800);
	int cups2 = coffee(800, 300);

	cout << cups << " / " << cups2 << endl;

	return 0;
}

int coffee(int money, int cost)
{
	return money / cost;
}
#연습문제
// 기본인자값과 오버로딩중 어떤 형태를 사용하는게 좋을지 생각해보자.
// 기본인자값보다는 오버로딩이 더 좋은 형태.

#include 
using namespace std;

void Display99Dan(int dan);
void Display99Dan(int startDan, int endDan);

void main()
{
	cout << "구구단 2단 출력" << endl;
	Display99Dan(2);
	
	cout << endl << "구구단 3단부터 5단까지 출력" << endl;
	Display99Dan(3, 5);
}

void Display99Dan(int dan)
{
	//if(dan == 0) return; // 출력없이 함수만 종료.
	cout << "[" << dan << "단]" << endl;
	for(int i=1; i<=9; i++)
	{
		cout << dan << " X " << i << " = " << dan*i << endl;
	}
}

void Display99Dan( int startDan, int endDan )
{
	while(startDan <= endDan)
	{
		Display99Dan(startDan);
		startDan++;
	}
}