프로그래머/CPP_강의정리

cpp 함수 TIP과 구조체

미역국마싯 2021. 9. 9. 16:04

오버로딩

함수 이름을 재사용한다.

input 부분인 매개변수가 달라야 재사용 할 수 있다.

output 부분인 함수의 타입만 바꾸면 재사용 할 수 없다.

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

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

int main()
{
	int result = Add(1, 2);
	float result2 = Add(1.5f, 2.1f);
}

 

 

스택 오버플로우

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

	return n * Factorial(n - 1);
}

int main()
{
	int result = Factorial(1000000);	// stack overflow 발생!
}

100만 번 함수를 호출하면, stack overflow가 발생한다. 메모리가 부족해서 발생하는 현상이다.

이를 해결하려면, 숫자 크기를 제한하거나 재귀가 아니라 일반 반복문을 사용하는 것처럼 예외처리가 필요하다.

 

구조체

struct ObjectInfo
{
    int type;
    int hp;
    int attack;
    int defence;
};

구조체를 잘 사용하면 가독성을 높이고 변수 이름을 편안하게 지을 수 있다.

 

ObjectInfo playerInfo;
//int playerType;
//int hp;
//int attack;
//int defence;

playerInfo.hp

ObjectInfo monsterInfo;
//int monsterType;
//int monsterHp;
//int monsterAttack;
//int monsterDefence;

monsterInfo.hp

구조체를 사용하지 않으면 위 예시처럼 여러개의 변수를 만들어야 하기 때문에 관리하기 힘들다.

 

 

 

출처

https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC-3d-mmorpg-1/dashboard

 

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의

시리즈를 원활하게 학습하기 위한 기초적인 C++ 문법들에 대해 학습합니다. 어셈블리 언어부터 시작해서 기본 C++ 문법, STL, C++11까지 핵심적인 내용을 압축해서 다루게 됩니다., - 강의 소개 | 인

www.inflearn.com

 

'프로그래머 > CPP_강의정리' 카테고리의 다른 글

cpp 배열  (0) 2021.09.14
cpp 값 전달 방식  (0) 2021.09.13
cpp 호출 스택  (0) 2021.09.09
cpp rand와 상수  (0) 2021.09.08
cpp 입출력과 네임스페이스  (0) 2021.09.05