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]
- i번째부터 j번째까지 자른다.
- 정렬한다.
- 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부터 시작
- 범위는 [시작, 끝)
- "시작 포함, 끝 미포함" 규칙을 기억하자
'TIL' 카테고리의 다른 글
| [C++] - 가장 가까운 같은 글자 (2) | 2026.06.18 |
|---|---|
| 언리얼 EQS(Environment Query System)를 공부하며 이해한 것 (0) | 2026.06.15 |
| [TIL] C++ 정렬, 람다 함수, override, TEXT() (0) | 2026.06.11 |
| [TIL] - 언리얼 C++ Pawn, Enhanced Input, 비행체 구현 (0) | 2026.06.10 |
| [TIL] Unreal Engine Enhanced Input System (C++) (0) | 2026.06.09 |