1. const_cast
: const 변수의 상수 속성을 없애고자 할 때 사용한다. 네 종류의 방법 중 상수 속성을 없애는 유일한 캐스팅 방법이다.
ex)
exturn void ExFunc(char* str);
void f(const char* str)
{
ExFunc(const_cast<char*>(str);
}
2. static_cast
: 가장 일반적인 타입 변환을 수행한다.
예를 들어 int 변수를 이용해서 double 타입의 결과값을 계싼할 때 정수 나눗셈이 발생하지 않게 하려면 static_cast를 이용해서 int 변수를 double로 변환한다.
ex)
int i = 3;
int j = 4;
double result = static_cast<double>(i) / j;
3. reinterpret_cast
: 특별한 상황에서 타입 간 변환을 강제적으로 할 수 있다.
4. dynamic_cast
: RTTI 검사를 수행하여 해당 변환이 적합한 클래스 계층 간 이동인지 확인한다.
타입 검사를 하기 위해서는 클래스에 하나 이상의 virtual이 있어야 한다. 없다면 컴파일 에러가 발생한다.