1. 오버로드 (중복 정의 ; 함수 이름 재사용)

int Add(int a, int b)
{
	int result = a + b;
	return result;
}

float AddFloat(float a, float b)
{
	float result = a + b;
    return result;
}

int main()
{
	float result = AddFloat(1.5f, 2.5f)
	cout << result << endl;
	return 0;
}

//Output : 4

위처럼 실수를 계산하는 함수를 따로 만들 수 있지만, 코드의 효율성을 위해 비슷한 계산을 할 때

매개변수 개수가 다르거나, 타입이 다를 때 함수 이름을 재사용할 수 있다.

int Add(int a, int b)
{
	int result = a + b;
	return result;
}

float Add(float a, float b)
{
	float result = a + b;
  	return result;
}

int main()
{
	float result = Add(1.5f, 2.5f)
	cout << result << endl;
	return 0;
}

//Output : 4

* 단, 매개변수의 타입을 지정하지 않으면 오버로드가 불가능함.

 

2. 기본 인자값

// 경우에 따라 특정 인자가 없을 수 있을 때는 0으로 설정
void SetPlayerInfo(int hp, int mp, int attack, int guildid = 0)
{

}

int main()
{
	SetPlayInfo(100, 40, 10);
}

입력이 되지 않은 필드는 지정된 기본값을 대입한다.

* 기본값을 설정하고 싶은 매개 변수는 반드시 마지막에 배치되어야 한다. 

 

3. 스택 오버플로우

함수를 계속 호출하다가 스택 메모리를 넘게 되면 크래시가 발생함.

다음과 같은 재귀 함수를 만들었을 때,

int Factorial(int n)
{
	if (n <= 1)
		return 1;

	return n * Factorial(n - 1);
}

int main()
{
	int result = Factorial(5);
	cout << result << endl;
}

n의 값이 매우 커지면 크래시가 발생함.

이를 방지하기 위해서, 반복문을 사용할 수 있음.

'기초 C++ 스터디' 카테고리의 다른 글

4-1. 포인터  (0) 2023.05.11
3-7. 구조체  (0) 2023.05.10
3-4. 호출 스택  (0) 2023.05.09
3-3. 지역 변수와 값 전달  (0) 2023.05.09
3-2. 스택 프레임  (0) 2023.05.09