TIL

[TIL] 언리얼 C++ & 코드카타 학습 정리

think95592 2026. 6. 12. 20:41

1. virtual과 override

역할

  • virtual : 부모 클래스에서 선언
  • override : 자식 클래스에서 재정의

기억할 것

  • virtual → 부모 선언부
  • override → 자식 선언부
  • cpp 구현부에는 둘 다 쓰지 않음
  • override만 써도 virtual 기능 유지

2. TakeDamage

언리얼 AActor가 제공하는 가상 함수.

동작 흐름

ApplyDamage → TakeDamage → 체력 감소

기억할 것

  • TakeDamage는 언리얼 기본 함수
  • 전투 시스템의 핵심 진입점
  • 몬스터, 플레이어 모두 오버라이드 가능

3. TEXT()

언리얼 문자열 작성 시 사용.

주로:

  • UE_LOG
  • CreateDefaultSubobject

기억할 것

언리얼 문자열은 습관적으로 TEXT() 사용.


4. include 습관

규칙

cpp 첫 줄은 자기 헤더.

예)

 
#include "MyClass.h"
 

이유

헤더가 독립적으로 컴파일 가능한지 확인하기 위해.


5. include 추가 시 체크

새 include가 생기면 확인할 것.

내가 이 헤더 안의 클래스를 실제로 사용하고 있는가?

오늘 발견한 사례

  • WebRTC
  • HLSLTree

둘 다 현재 게임 로직과 관계없는 헤더였음.

발생 사유 : 자동완성으로 이상한 코드를 잠깐 작성했다가 라이더가 추가해주었음.

해결 방법 : 당분간 자동완성 없이 학습하고 익숙해지면 다시 사용하도록 조치 완료

 

기억할 것

include는 필요한 것만 추가.


코드카타 - 프로그래머스 K번째 수

문제 요약

명령 [i, j, k]

  1. i번째부터 j번째까지 자른다.
  2. 정렬한다.
  3. k번째 수를 찾는다.

핵심 1. 인덱스 보정

문제는 1부터 시작.

C++ 배열은 0부터 시작.

따라서

  • i번째 → i - 1
  • k번째 → k - 1

보정이 필요하다.


핵심 2. C++ 범위 규칙

오늘 가장 중요했던 내용.

C++의 대부분 범위 함수는

[시작, 끝)

규칙을 사용한다.

  • 시작 포함
  • 끝 미포함

예를 들어:

 
array.begin() + (i - 1)
array.begin() + j
 

문제의 i번째 ~ j번째까지를 의미한다.

왜냐하면 끝 지점은 포함되지 않기 때문이다.


예시

배열

[1, 5, 2, 6, 3, 7, 4]
 

명령

[2, 5, 3]
 

범위

begin + 1
~
begin + 5
 

결과

[5, 2, 6, 3]
 

정렬 후

[2, 3, 5, 6]
 

3번째 값 선택

5
 

오늘의 핵심 한 줄

언리얼

  • virtual은 부모
  • override는 자식
  • cpp 구현부에는 둘 다 안 씀
  • TakeDamage는 전투 시스템 진입점
  • TEXT()는 언리얼 문자열
  • include는 필요한 것만

코드카타

  • 문제는 1부터 시작
  • C++은 0부터 시작
  • 범위는 [시작, 끝)
  • "시작 포함, 끝 미포함" 규칙을 기억하자