본문 바로가기

분류 전체보기155

전방 선언 컴파일러에게 사용하고자 하는 객체 타입만 알려서 컴파일을 가능하게 하는 것을 전방 선언이라고 합니다.코드로 보면 매우 단순합니다class Player; 이 한 줄 코드로 • Player 라는 타입 이름이 존재한다. • 구현은 모른다. • 멤버도 모른다. • 크기도 모른다 그래도 컴파일은 됩니다.결국 전방 선언이라는 것은 헤더 포함 (#include) 을 회피하고, 컴파일에게는 최소한의 타입 정보만을 제공함으로써 결과적으로 컴파일 시간을 절약하기 위한 방법이라고 할 수 있습니다. 단, 여기에는 몇가지 조건이 있습니다. 1. 포인터 멤버나 참조 (가능)class Player;class Enemy{ Player* target; // OK}; 이 경우 포인트의 크기는 주소값이므로 고정이고 Player.. 2026. 1. 5.
TCHAR 에 대한 이해 이 글은 윈도우의 역사, 문자 인코딩의 변화, 그리고 TCHAR의 탄생 배경을 함께 다룹니다.내용이 다소 길고 깊기 때문에, 모든 세부를 완벽히 이해하지 않으셔도 무방합니다.다만 전체 흐름을 따라가면, TCHAR가 왜 생겼고 왜 지금은 과거의 유물이 되었는지 자연스럽게 이해하실 수 있을 것입니다. 1. 아스키 코드 시대초기의 컴퓨터 환경에서는 아스키(ASCII) 코드만으로 충분했습니다.아스키는 문자 하나를 **1바이트(8비트)**로 표현하며, 실제로는 다음과 같은 숫자 체계입니다.'A' → 65'B' → 66'a' → 97'0' → 48 즉, 문자는 개념이 아니라 숫자였고, char 하나에 이 숫자를 담아 처리했습니다.이 구조는 영문 환경에서는 매우 단순하고 효율적이었습니다. 2. ANSI와 글로벌 문자.. 2026. 1. 4.
const 는 어디에 위치하느냐에 따라 의미가 달라집니다 1. 기본 개념C++ 에서 const 는 값을 고정할 때 사용됩니다.const int x = 10; 여기서 x 는 고정이므로 x 는 10 이 아닌 다른 값을 가질 수 없습니다.x = 11; 이것은 컴파일 오류를 일으키고, 대부분 여기까지는 자연스럽게 받아들입니다. 2. const 의 진짜 의미C++ 에서 const 는 일반적으로 바로 다음에 오는 대상을 고정시킨다는 의미로 해석해야 합니다. 그리고 이 사실을 깨닫는 것은 굉장히 중요합니다. 2-1. 기본 타입에서의 const먼저 가장 단순한 경우부터 보겠습니다.int const x = 10; 이 코드는 말 그대로 x 라는 값 자체를 고정시킵니다.이후에는 어떤 경우에도 x 에 다른 값을 대입할 수 없습니다.보통은 앞에서 보신 것 처럼, 아래와 같은 형태를 .. 2026. 1. 2.
헤더(.h)와 소스(.cpp)를 분리하는 이유 C++에서 헤더(.h)와 소스(.cpp)를 분리하는 이유를 한마디로 정리하면 컴파일 시간 비용을 줄이기 위해서입니다.다른 객체를 사용하기 위해 컴파일러가 알아야 할 것은 그 객체의 타입 정보입니다.객체의 내부 구현은 다른 cpp 파일 입장에서는 알 필요가 없습니다.따라서 컴파일에 필요한 타입 정보만 헤더 파일에 두고, 구현 내용은 cpp 파일로 분리하면 이 헤더 파일을 포함한 다른 소스 파일을 컴파일 할 때 해당 객체의 구현 코드를 함께 처리하지 않아도 됩니다.그 결과, 처리해야 할 코드량이 줄어들면서 전체 컴파일에 낭비되는 시간이 감소하게 됩니다.1. heaer 와 cpp 의 코드 분리 Player.h (타입 정보) #pragma onceclass Player{ public : void M.. 2025. 12. 27.
언리얼 엔진의 기본 상속 구조 Unreal Engine 의 기본 상속 구조는 아래와 같습니다. class AActor;class APawn : public AActor{ // 조종 가능한 객체};class ACharacter : public APawn{ // 보행 생명체 전용 클래스 // CharacterMovementComponent 포함}; • AActor | | -- APawn | | -- ACharacter 1. AActorAActor는 월드에 존재할 수 있는 모든 객체의 최상위 기본 클래스입니다.AActor의 주요 특징은 다음과 같습니다. • 월드에 배치될 수 있습니다. • 위치, 회전, 스케일 정보를 가집니다. • 컴포넌트를 부착할 수 있습니다. • BeginP.. 2025. 12. 27.
왜 언리얼 엔진의 클래스 등록 절차는 복잡할까? 유니티에 비해 언리얼은 클래스 등록 절차가 다소 시간이 걸리고 복잡해 보입니다.이것은 언리얼 자체의 문제라기 보다는 지원하는 언어가 C++ 이라는 보다 근본적인 이유에 있습니다. 1. C# 과 C++ 의 근본적인 차이C# 과 C++의 가장 큰 차이는 런타임에 클래스 정보를 가져올 수 있느냐의 차이입니다.용어로는 리플렉션이라고 하는데 C# 은 런타임에 리플렉션을 지원하는 언어입니다. 쉽게 설명하면, 프로그램이 실행 중일 때, 클래스 이름, 멤버 변수, 함수 정보 같은 타입 정보를 런타임에서 확인할 수 있다는 의미입니다. 반면 C++은 런타임에 클래스 정보를 조회할 수 없는 언어입니다. 언어 차원에서 리플렉션을 지원하지 않기 때문입니다. 따라서 프로그램이 실행된 이후에는 이 클래스가 어떤 멤버를 가지고 있.. 2025. 12. 27.