C++ 스타일의 캐스트 연산자에는 4가지가 있다.
static_cast | C 스타일 캐스트와 똑같은 형변환 능력. |
const_cast | 표현식의 상수성이나 휘발성(volatileness)를 없애는 데 사용. |
dynamic_cast | 상속 계층 관게를 가로지르거나 하향시킨 클래스 타입으로 안전하게 캐스팅할 때 사용. 기본 클래스의 객체에 대한 포인터나 참조자의 타입을 파생 클래스, 혹은 형제 클래스(다중 상속시) 의 타입으로 변환. 캐스팅 실패시 포인터의 경우 널 포인터, 참조자 캐스팅시는 예외를 던진다. 가상 함수가 없는 타입에는 적용할 수 없다. |
reinterpret_cast | 강제 형변환. 이 연산자가 적용된 후의 변환 결과는 거의 항상 컴파일러에 따라 다르게 정의되어 있다. 따라서, 이 연산자가 쓰인 소스는 직접 이식이 불가능하다. 사용 예는 함수 포인터 타입을 서로 바꾸는 경우이나, 가급적 사용 자제. |
참고한 책에는 형변환이 필요한 경우 C++ 스타일의 형변환 연산자를 사용할 것을 권한다.
참고 : More Effective C++