C++ 함수 포인터 완벽 이해: 콜백 구조로 배우는 함수 포인터
📚 델리게이트 시리즈 1편: 함수 포인터 2편: std::function 3편: Delegate 구현 4편: 엔진 스타일 Delegate 🚀 들어가며 게임에서 키를 눌렀을 때 특정 함수가 실행되는 구조는 어떻게 만들어질까요? “나중에 실행할 함수”를 저장할 수 있다면, 이벤트…
Series Archive
게임 개발 및 프로그래밍에 관련된 주제에 대한 카테고리 입니다.
📚 델리게이트 시리즈 1편: 함수 포인터 2편: std::function 3편: Delegate 구현 4편: 엔진 스타일 Delegate 🚀 들어가며 게임에서 키를 눌렀을 때 특정 함수가 실행되는 구조는 어떻게 만들어질까요? “나중에 실행할 함수”를 저장할 수 있다면, 이벤트…
🚀 들어가며 이전 글에서는 C++로 게임 루프를 직접 구현하면서👉 고정 프레임(Fixed Timestep) 구조를 살펴봤습니다. 이번 글에서는 한 단계 더 나아가👉 게임 루프의 다양한 방식들을 비교해보겠습니다. 🎯 이번 글의 목표 게임 루프에는 여러 방식이 존재합니다.…
🚀 들어가며 이전 글에서는 게임 루프의 기본 개념과deltaTime이 왜 필요한지 살펴봤습니다. 👉 게임은 반복되는 루프를 통해 계속 실행된다 이번 글에서는 한 단계 더 나아가👉 C++로 실제 동작하는 게임 루프를 구현해보겠습니다. 🎯 이번 글의 목표…
🚀 들어가며 이번 글에서는 C++ 게임 루프의 기본 구조와 게임이 어떻게 계속 실행되는지를 설명합니다. 게임을 실행하면 캐릭터가 움직이고, 화면이 계속 갱신됩니다. 그렇다면 이런 질문이 자연스럽게 떠오릅니다. ❓ 게임은 어떻게 “계속” 실행되는 걸까? 이 질문에…
예제 코드 깃허브 링크 🚀 들어가며 👉 이 시리즈는 RTTI 개념에서 시작해 엔진 구조까지 단계적으로 확장됩니다. C++에서 타입을 다루는 방법은 단순한 문법 이상의 의미를 가집니다. dynamic_cast로 시작해서👉 직접 RTTI를 구현하고, 나아가 엔진 수준…
예제 코드 깃허브 링크 🚀 들어가며 이번 글에서는 C++ TSubclassOf 구현을 통해 타입 정보를 기반으로 객체를 생성하는 방법을 살펴봅니다. 이전 글에서 우리는 다음의 내용을 이해하고 구현했습니다. dynamic_cast의 원리 이해 다운캐스팅의 위험성 TypeId 기반 RTTI…
예제 코드 깃허브 링크 🚀 들어가며 이전 글에서는 TypeId 기반으로👉 dynamic_cast 없이 타입을 비교하는 방법을 구현했습니다. if (obj->Is(Player::TypeId())) 이 방식은 매우 빠르고 단순합니다.하지만 실제로 사용하다 보면 한 가지 한계에 부딪힙니다. ❗ 타입에 대한 “정보”가…
예제 코드 깃허브 링크 🚀 들어가며 이전 글에서 C++의 dynamic_cast와 RTTI 개념을 살펴봤습니다. 그리고 중요한 사실을 확인했습니다. ❗ dynamic_cast는 안전하지만, 런타임 비용이 발생한다 또한 다운캐스팅이 왜 위험한지도 메모리 관점에서 확인했습니다. 그렇다면 자연스럽게 이런 질문이…
[1.5편] C++ 다운캐스팅이 위험한 이유: 메모리 구조와 포인터 관점에서 이해하기 🚀 들어가며 이전 글에서 dynamic_cast와 RTTI에 대해 살펴봤습니다. 그런데 여기서 한 가지 중요한 질문이 남습니다. ❓ 왜 C++에서 다운캐스팅은 위험하다고 할까? 단순히 “안전하지 않다”는…
🚀 들어가며 C++을 공부하다 보면 한 번쯤 이런 상황을 만나게 됩니다. Base* obj = GetObject(); Derived* derived = dynamic_cast<Derived*>(obj); if (derived) { // Derived 타입일 때만 처리 } 이 코드는 너무 익숙하지만,면접에서 이런 질문을…