Programming/C++ Language
static_cast 와 dynamic_cast
Jorten
2015. 1. 7. 11:16
static_cast
: 컴파일러에게, 모든 형 변환에 대해 허용하도록 해주는 구문. 이 형변환에 대한 모든 책임은 프로그래머가 진다.
Car* pCar = new Truck();
Truck* pTruck = static_cast<Truck*>pCar;
pTruck->drive();
정상동작.
Car* pCar = new Car();
Truck* pTruck = static_cast<Truck*>pCar;
pTruck->drive();
비정상동작.
: 따라서, 정말 필요한 경우에만 제한적으로 사용하는 것이 좋다.
: 부모 포인터를 자식 포인터로 변환할때, 의도적으로 한다는 것을 표현할때 좋다.
dynamic_cast
: 상속관계에서의 안전한 형 변환
: 자식 객체의 포인터 및 참조형 변수를 부모형 포인터 및 참조형 변수로 형 변환 해주는데 사용 된다.
Car* pCar = new Truck();
Truck* pTruck = dynamic_cast<Truck*>pCar;
컴파일 에러
Car* pCar = new Car();
Truck* pTruck = dynamic_cast<Truck*>pCar;
컴파일 에러
Car* pTruck = new Truck();
Car* pCar = dynamic_cast<Truck*>pTruck;
컴파일 성공