항목 설명
Forward Declaration (class Foo;) "Foo라는 타입이 있다고만 알려주는 것"
Header Include (#include "Foo.h") "Foo의 정의 전체를 가져오겠다"는 의미

상세 차이점

항목 Forward Declaration Header Include
무엇을 하나요? 타입의 존재만 알려줌 타입의 정의 전체를 포함
헤더 크기 영향 작음 (빠름) 크고 느려짐
컴파일 시간 빨라짐 느려짐 (불필요한 의존 증가)
가능한 사용 포인터, 참조형만 가능 (Foo*, Foo&) 모든 사용 가능 (멤버 접근, sizeof 등)
불가능한 사용 멤버 변수 직접 접근, 인스턴스 생성, sizeof 등 전부 가능
UCLASS, USTRUCT 등 안 됨 무조건 include 필요