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

설정

트랙백

댓글