컴퓨터공학 기초/C.C++

const_cast, static_cast, reinterpret_cast, dynamic_cast

레필리아 2013. 5. 6. 10:08

const_cast

const로 선언된 상수를 일반변수로 변환하는데 사용된다. volatile를 변환시키는데도 쓰인다

 

static_cast

c캐스팅과 비슷한 기본적인 캐스팅 연산자로 실수형, 정수형, 열거형등 기본적인 형변환을 할때 사용된다

const_cast와 달리 일반변수를 상수로 바꿀수있지만 상수를 일반변수로 바꾸진못한다

c캐스팅과의 차이점은 타입체크를 run-time으로 하지않고 compile-time에 정적으로 수행한다

 

reinterpret_cast

어떠한 정수와 포인터 타입간에도 변환이 가능한 강력한 형변환이다

하지만 기본적인 캐스팅개념에서 벗어나 강제로 바꿔 매우 불안정하기 때문에 쓰려면 위험을 감수해야한다

 

dynamic_cast

상속관계에있는 클래스간의 형변환을 할때 사용한다

형변환에 문제가없는지 안전검사도하는데 문제가 있을시에는 NULL값을 리턴하거나 예외를 띄운다

가상함수가 없는 클래스는 사용할 수 없다