글
static_cast 와 dynamic_cast
Programming/C++ Language
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;
컴파일 성공
'Programming > C++ Language' 카테고리의 다른 글
warning 에 대하여 (0) | 2015.01.07 |
---|---|
typeid 키워드 (0) | 2014.04.15 |
Unique Pointer (0) | 2014.03.03 |
[C++] 동적바인딩( Dynamic binding ) (0) | 2011.01.03 |
[C++] this 포인터 사용하기 (0) | 2010.07.31 |