static_cast : 언어적 차원에서 지원하는 일반적인 타입 변환
const_cast : 객체의 상수성을 없내는 타입변환
dynamic_cast : 파생 클래스 사이에서의 다운 캐스팅
reinterpret_cast : 위험을 감수하고 하는 캐스팅으로서 서로 관련이 없는 포인터들 사이의 캐스팅
무지한 캐스팅은 심각한 버그를 초래 할 수 있다.