#include <iostream>
using namespace std;
//오버로딩( 중복 정의 : 함수 이름의 재사용)
//함수 이름을 재정의 하겠다는 의미
//매개 변수 갯수가 다르거나
//매개변수 타입이 다르거나 (순서가 다른걸 포함)
int Add(int a, int b) {
int result = a + b;
return result;
}
float Add(float a, float b) {
float result = a + b;
return result;
}
//기본 인자값
//guildId와 같이 기본 값을 설정해주면 매개변수를 주지 않아도 기본 값으로 초기화
//기본 값이 주어지는 매개변수는 꼭 마지막에 있어야한다.
void SetPlayerInfo(int hp, int mp, int attack, int guildId=0) {
}
//스택 오버플로우
//로직적으로 맞더라도 경우에 따라서 스택이 버티지 못해 터질 수 있다.
//ex)재귀함수로 만든 팩토리얼 함수에 매우 큰 숫자를 넣을 경우
//스택 오버플로우를 막기위해서는 예외처리가 필수적
int main()
{
float result = Add(1.5f, 2.1f);
SetPlayerInfo(100, 40, 5);
return 0;
}