const_cast<TO_TYPE>(FROM_OBJ) : const 속성을 없애는데 사용한다. 다른 방법은 없다.
static_cast<TO_TYPE>(FROM_OBJ) : C style cast와 가장 유사한 형태. 단, parent class --> child class시 check를 하지 않으므로 문제 발생의 요지가 있다!dynamic_cast<TO_TYPE>(FROM_OBJ) : runtime type check가 가능함. 따라서 parent class --> child class시 사용하면 type check를 통해서 exception이나 null (포인터의 경우)을 리턴한다.
reinterpret_cast<TO_TYPE>(FROM_OBJ) : low level casting. Compiler와 target platform에 대해서 잘 알고 있는 것이 아니라면 안쓰는 것이 좋다.
dynamic_cast는 대부분의 경우 "메우" 느리고 비효율 적으로 구현되어 있다. 따라서 가능하면 쓰지말고 virtual func를 parent class에 추가하거나 container를 이용해서 child class를 직접 지정하는 방식으로 피해가도록 한다!
댓글 없음:
댓글 쓰기