분류 전체보기 39

#define 0 NULL

NULL#define으로 0을 정의한 매크로포인터가 유효한 주소를 가리키지 않는 상태를 나타내기 위해 사용한다.NULL은 포인터가 아니라 정수 0으로 정의된 매크로이며, 컴파일 시 0으로 치환된다.NULL 사용 예시int* p = NULL;0은 C/C++에서 특별하게 null pointer constant로 취급되기 때문에 포인터에 대입할 수 있다.포인터는 내부적으로 주소값을 저장하지만, 일반 정수와 달리 해당 값을 메모리 주소로 해석하여 사용한다.따라서 NULL은 값 자체는 0이지만 의미적으로는유효한 메모리를 가리키지 않는 포인터를 나타낸다.NULL의 문제점void func(int x);void func(int* x);func(NULL);NULL은 정수 0으로 정의되어 있기 때문에func(int x);..

c++/기초 2026.06.02

GameInstance

# GameInstance 게임 프로그램이 실행되는 동안 유지되는 최상위 게임 객체 레벨이 변경되어도 사라지지 않으며 게임 전체 상태를 관리한다. --- # 생명 주기 ```text 게임 실행 | v GameInstance 생성 | v MainMenu 레벨 | v Lobby 레벨 | v Battle 레벨 | v 게임 종료 | v GameInstance 소멸 ``` GameInstance는 게임이 시작될 때 한 번 생성되고 게임이 종료될 때까지 유지된다. 레벨 전환(맵 이동)이 발생해도 파괴되지 않는다. --- # 사용 목적 레벨이 바뀌어도 유지되어야 하는 데이터를 저장할 때 사용한다. ## 전역 데이터 관리 - 플레이어 프로필 - 게임 설정 - 레벨 간 공유 데..

GameMode

#GameMode현재 레벨의 게임 규칙을 관리하는 객체플레이어가 어떻게 스폰되는지승리와 패배 조건이 무엇인지게임이 어떤 방식으로 진행되는지 등을 담당한다.생명 주기게임 시작 | vMainMenu 레벨 로드 | vMainMenu GameMode 생성 | vLobby 레벨 이동 | vMainMenu GameMode 소멸 | vLobby GameMode 생성 | vBattle 레벨 이동 | vLobby GameMode 소멸 | vBattle GameMode 생성 | v게임 종료GameMode는 레벨마다 새롭게 생성된다.레벨이 변경되면 기존 GameMode는 파괴되고새로운 GameMode가 생성된다.사용 목적현재 레벨의 게임 규칙을 관리한다.플레이어 관리플레이어 스폰 위치 결정기..

Delegate (델리게이트)

Delegate (델리게이트)함수(이벤트)를 저장하고 나중에 호출할 수 있는 객체함수 포인터를 더 안전하고 편리하게 사용할 수 있도록 만든 언리얼의 이벤트 시스템이다.왜 사용하는가?객체끼리 직접 의존하지 않고특정 이벤트가 발생했을 때 원하는 함수를 실행할 수 있다.예를 들어몬스터 사망 ↓경험치 지급 ↓UI 갱신 ↓퀘스트 진행도 증가몬스터가 직접 모든 시스템을 알 필요가 없다.델리게이트에 등록된 함수들을 호출하기만 하면 된다.기본 개념이벤트 발생 ↓Delegate 실행 ↓등록된 함수 호출일반 함수 호출Player->TakeDamage(10);특정 객체를 알아야 호출 가능Delegate 사용OnPlayerDamaged.Broadcast(10);누가 듣고 있는지 몰라도 됨등록..

참조자(Reference)

레퍼런스 (Reference)레퍼런스(Reference)는 변수의 또 다른 이름(별명, Alias)이다.레퍼런스는 새로운 메모리를 생성하는 것이 아니라기존 변수의 메모리를 그대로 사용한다.즉, 같은 메모리를 다른 이름으로 접근하는 방식이다.포인터와 다르게 주소를 저장하는 변수가 아니며반드시 이미 존재하는 변수와 연결되어야 한다.그렇기 때문에 선언과 동시에 초기화가 필요하며참조할 변수가 없으면 문법 오류가 발생한다.레퍼런스 선언int a = 10;int& r = a;여기서a : 원본 변수r : a의 레퍼런스(별명)잘못된 예시int& r;컴파일 오류 발생레퍼런스는 반드시 참조할 대상이 필요하기 때문이다.메모리 관점에서 보기int a = 10;int& r = a;메모리 구조주소 변수 값100..

c++/기초 2026.05.31

포인터

포인터 (Pointer)포인터(Pointer)는 메모리의 주소(Address)를 저장하는 변수이다.일반 변수는 값을 저장하지만,int a = 10;포인터는 주소를 저장한다.int* p = &a;변수는 메모리 공간이다int a = 10;이 코드를 실행하면 메모리 어딘가에 공간이 생성되고 그 공간은메모리 내 변수의 위치정보를 알리기 위한 주소를 가진다.예시:주소 변수 값1000 a 10변수 이름 : a주소 : 1000값 : 10실제 사용될 때의 주소의 형태는 다르지만 이해를 위해 주소를 1000 이라고 가정한다.컴퓨터는 주소를 사용한다사람이 적을때a = 20;컴퓨터가 하는 동작1000번지에 저장된 값을 20으로 변경즉, 컴퓨터 입장에서는 변수 이름보다 주소가 더 중요하..

c++/기초 2026.05.31

매크로

#define 매크로#define은 전처리기(Preprocessor) 지시문이다.컴파일하기 전에 코드의 특정 문자열을 다른 값으로 치환할 수 있다.#define 이름 값예시:#define MAX_HP 100int hp = MAX_HP;컴파일 전에 다음과 같이 치환된다.int hp = 100;특징컴파일 전에 단순 텍스트 치환변수가 아님타입이 존재하지 않음메모리에 저장되지 않음세미콜론(;)을 사용하지 않음#define PI 3.14매크로 함수함수처럼 사용할 수도 있다.#define SQUARE(x) ((x) * (x))사용 예시:int a = SQUARE(3);컴파일 전에 다음과 같이 치환된다.int a = ((3) * (3));결과:a = 9괄호를 사용하는 이유매크로는 단순 치환이기 때문에 괄호가 없으면 ..

c++/기초 2026.05.31

플러그 인

플러그인(Plugin)플러그인은 프로그램이나 엔진의 기능을 확장하기 위해 추가로 설치하는 모듈이다.기본 기능에는 포함되어 있지 않지만,필요한 기능을 쉽게 추가할 수 있도록 만들어진 독립적인 코드 묶음이다.플러그인을 사용하는 이유기능을 재사용할 수 있음프로젝트를 모듈화할 수 있음필요한 기능만 추가 가능유지보수가 쉬움직접 구현하는 시간 절약언리얼 엔진에서의 플러그인언리얼 엔진의 플러그인은 다음과 같은 기능을 추가하기 위해 사용된다.새로운 기능 추가에디터 기능 확장온라인 서비스 연동AI 기능 추가멀티플레이어 기능 추가예시OnlineSubsystemSteamGameplayAbilities(GAS)CommonUIEnhanced InputEOS(Epic Online Services)플러그인의 구조플러그인은 일반적으..

정적 변수

정적 변수 (Static Variable)정적 변수는 프로그램이 종료될 때까지 메모리에 유지되는 변수이다.일반 지역 변수와 달리 함수가 종료되어도 값이 사라지지 않는다.특징프로그램 시작 시 생성된다.프로그램 종료 시 제거된다.한 번만 생성된다.함수가 종료되어도 값이 유지된다.데이터 영역(Data Segment)에 저장된다.접근 범위(Scope)는 선언된 위치에 따라 결정된다.기본 문법static 자료형 변수이름;예시static int Count = 0;일반 지역 변수와 비교일반 지역 변수void Func(){ int x = 0; x++; std::cout 호출Func();Func();Func();결과111함수가 호출될 때마다 새로 생성되고 함수가 끝나면 제거된다.정적 변수void Func..

c++/기초 2026.05.29

오버로딩

오버로딩 (Overloading)오버로딩은 같은 이름의 함수를 여러 개 정의하는 것이다.단, 함수 이름은 같아도 매개변수의 형태가 달라야 한다.기본 예시void Func(int x);void Func(float x);void Func(int x, int y);위 함수들은 모두 이름이 Func로 같지만, 매개변수가 다르기 때문에 오버로딩이 가능하다.오버로딩이 가능한 기준함수의 매개변수 목록이 달라야 한다.void Func(int x);void Func(float x);void Func(int x, int y);void Func(float x, int y);가능한 차이매개변수 개수 차이매개변수 타입 차이매개변수 순서 차이매개변수 개수 차이void Func(int x);void Func(int x, int y..

c++/기초 2026.05.29