오븐 노트

[C++] 함수 마무리 (오버로딩, 기본 인자값, 스택 오버플로우) 본문

Develop/C++

[C++] 함수 마무리 (오버로딩, 기본 인자값, 스택 오버플로우)

오 븐 2022. 6. 12. 19:33

오버로딩 (중복 정의 : 함수명 재사용)

호출 시 같은 이름의 함수더라도 매개변수로 인해 구분이 가능할 경우 같은 이름이어도 사용이 가능하다.

- 매개변수의 개수가 다를 경우 (기본 인자값 주의)

- 매개변수의 타입이 다를 경우 (순서 포함)

- 반환 형식은 해당되지 않음

#include <iostream>
using namespace std;

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


int Add(int a)
{
	return a + 1;
}

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

int main()
{
	int result = Add(1, 2);
	cout << result << endl;
}

기본 인자값

#include <iostream>
using namespace std;

// 기본 인자값이 있을 경우 함수 호출시 생략 가능
// 단, 기본 인자값이 설정 된 매개변수는 맨 뒤로 위치해야함
void SetPlayerInfo(int hp, int mp, int attack, int guildid = 1, int castleld = 1)
{

}

int main()
{
	SetPlayerInfo(100, 50, 10);
}

스택 오버플로우

#include <iostream>
using namespace std;

// 스택 오버플로우
// 재귀함수가 아닌 while문으로 연산을 하거나 너무 큰 수를 입력하지 못하도록 예외처리가 필요
// 너무 많은 함수 호출을 할 경우 스택 메모리 부족으로 인해 스택 오버플로우에 빠지게 됨
int Factorial(int a)
{
	if (a <= 1)
		return 1;

	return a * Factorial(a - 1);
}

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

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
 
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.

 

모든 글은 제가 공부하기 위해 작성합니다.

'Develop > C++' 카테고리의 다른 글

[C++] TextRPG #2 (구조체)  (0) 2022.06.28
[C++] TextRPG #1 (포인터 X, 기초)  (0) 2022.06.15
[C++] 함수 기초  (0) 2022.06.12
[C++] 열거형  (0) 2022.06.12
[C++] 가위 바위 보  (0) 2022.06.12