캐스트
dev_hun
2022. 9. 20. 20:05
2022. 9. 20. 20:05
C++ 캐스트를 사용해야 하는 이유
- 코드만 보고 캐스트를 사용한 목적을 확실히 알 수 있습니다.
- 일부 캐스트는 컴파일 단계에서 에러를 확인할 수 있습니다.
C++ 캐스팅의 종류 및 사용방법
const_cast
const
, volatile
특성을 제거할 때 사용하는 캐스트입니다.
dynamic_cast
- 상속관계에 있는 사용자 정의 데이터 타입간에 업 캐스팅할 때 사용합니다.
- 가상 함수를 가진 상속관계에 타입간에 캐스팅시에는 다운 캐스팅도 가능합니다.
- 다운 캐스팅시 실제로 상속관계에 있는 타입인지 런 타임에 RTTI를 통해 검사하기 때문에 안전성 측면에서는 이점이 있지만, 검사하는 코드로 인해 성능상 좋지 못한 캐스트입니다.
reinterpret_cast
- 어떠한 타입이든 캐스팅이 가능합니다.
- 강력한 캐스트이지만, 컴파일러마다 캐스팅 결과가 다르기 때문에 이식성이 좋지 못합니다.
static_cast
- 일반 데이터 타입간에 캐스팅을 허용합니다.
- 일반 데이터 타입을 void*로 캐스팅이 가능합니다.
- 상속관계에 있는 사용자 정의 데이터 타입간의 업, 다운 캐스팅이 가능합니다.