2009. 7. 9. 21:14

C++ 스타일의 형변환 (Type cast)


C++ 스타일의 캐스트 연산자에는 4가지가 있다.

 static_cast C 스타일 캐스트와 똑같은 형변환 능력. 
 const_cast  표현식의 상수성이나 휘발성(volatileness)를 없애는 데 사용.
 dynamic_cast  상속 계층 관게를 가로지르거나 하향시킨 클래스 타입으로 안전하게 캐스팅할 때 사용. 기본 클래스의 객체에 대한 포인터나 참조자의 타입을 파생 클래스, 혹은 형제 클래스(다중 상속시) 의 타입으로 변환.

캐스팅 실패시 포인터의 경우 널 포인터, 참조자 캐스팅시는 예외를 던진다.

가상 함수가 없는 타입에는 적용할 수 없다. 
                                                                                                                    
 reinterpret_cast 강제 형변환. 이 연산자가 적용된 후의 변환 결과는 거의 항상 컴파일러에 따라 다르게 정의되어 있다. 따라서, 이 연산자가 쓰인 소스는 직접 이식이 불가능하다.

사용 예는 함수 포인터 타입을 서로 바꾸는 경우이나, 가급적 사용 자제.

참고한 책에는 형변환이 필요한 경우 C++ 스타일의 형변환 연산자를 사용할 것을 권한다.

참고 : More Effective C++