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 |