캐스팅
캐스팅은 타입변환을 의미한다. 우리는 이전에 C언어에서 형번환 하는 방식인 (자료형) 형태에 대해서 짧게 다룬 적이 있다. 그때는 그냥 이런 게 있구나 하고 넘어갔지만 사실 C++에서는 이 형태에서 발전한 형태의 캐스팅이 존재한다.
static_cast
스태틱 캐스트는 안정성은 보장 못하지만 상식적인 캐스팅이라면 허용해주는 캐스팅이다. 예컨대 int자료형에서 float자료형으로 아니면 그 반대로 어느 정도 값에 손실이 발생할지라도 비슷하다면 캐스팅이 가능하다. 상속관계의 클래스에서도 부모클래스로부터 자식클래스로의 다운캐스팅의 경우 사용되기도 한다.
dynamic_cast
스태틱 캐스트의 단점을 조금 보완해주는 캐스팅으로서 상속 관계에서 안전한 형변환이 가능하다 그 이유는 RTTI를 사용하기 때문인데 Runtime Type Information의 약자인 RTTI는 가상함수를 포함하는 클래스가 존재하면 컴파일러가 가상함수테이블을 생성하는데 이를 이용해서 실시간으로 대상의 타입 정보를 가져오는 기능이다. 이를 통해서 런타임에서 캐스팅할 타입을 확인할 수 있고 맞는 타입인지 확인 후 캐스팅을 해준다. 잘못된 캐스팅을 했다면 nullptr을 반환하게 되어있다. 다이내믹 캐스트는 RTTI를 사용하기 때문에 필수적으로 virtual키워드를 갖고 있는 클래스가 존재해야 한다는 점을 꼭 기억하자.
const_cast
이건 그냥 const를 빼거나 붙이거나 할 수 있는 캐스트이다. 간혹가다 const를 인자로 받는 함수 등에서 값을 변경해야 할 때 사용한다.
reinterpret_cast
가장 강력하지만 강력한 만큼 가장 위험한 캐스팅으로서 전혀 관계 없는 두 타입을 변환할 때 사용한다. 예컨대 포인터를 정수 타입으로 변환하거나 할 때 사용한다. 그만큼 잘못 사용하면 굉장히 위험한 캐스팅 방법이다.
'unreal 5기' 카테고리의 다른 글
| 250912 언리얼엔진 본캠프 29일차 스마트 포인터 (0) | 2025.09.12 |
|---|---|
| 250910 언리얼엔진 본캠프 27일차 RAII (0) | 2025.09.10 |
| 250908 언리얼엔진 본캠프 25일차 파일3 (0) | 2025.09.08 |
| 250903 언리얼엔진 본캠프 22일차 파일1 (0) | 2025.09.03 |
| 250901 언리얼엔진 본캠프 20일차 동적할당 (2) | 2025.09.01 |