C++ 캐스트를 사용해야 하는 이유

  • 코드만 보고 캐스트를 사용한 목적을 확실히 알 수 있습니다.
  • 일부 캐스트는 컴파일 단계에서 에러를 확인할 수 있습니다.




C++ 캐스팅의 종류 및 사용방법

const_cast

  • const, volatile 특성을 제거할 때 사용하는 캐스트입니다.




dynamic_cast

  • 상속관계에 있는 사용자 정의 데이터 타입간에 업 캐스팅할 때 사용합니다.
  • 가상 함수를 가진 상속관계에 타입간에 캐스팅시에는 다운 캐스팅도 가능합니다.
  • 다운 캐스팅시 실제로 상속관계에 있는 타입인지 런 타임에 RTTI를 통해 검사하기 때문에 안전성 측면에서는 이점이 있지만, 검사하는 코드로 인해 성능상 좋지 못한 캐스트입니다.




reinterpret_cast

  • 어떠한 타입이든 캐스팅이 가능합니다.
  • 강력한 캐스트이지만, 컴파일러마다 캐스팅 결과가 다르기 때문에 이식성이 좋지 못합니다.




static_cast

  • 일반 데이터 타입간에 캐스팅을 허용합니다.
  • 일반 데이터 타입을 void*로 캐스팅이 가능합니다.
  • 상속관계에 있는 사용자 정의 데이터 타입간의 업, 다운 캐스팅이 가능합니다.

+ Recent posts