작성
·
90
0
dynamic_cast는 다운 캐스팅할 때 실행 시간에 타입을 검사하기 때문에 상대적으로 안전하지만 동작 속도가 static_cast보다 상대적으로 느리다고 알고 있습니다.
반대로 static_cast는 다운 캐스팅할 때 사용할 수 있지만, 실행 시간에 타입을 검사하지 않기 때문에 위험하고요.
이에 궁금한 점이 생겨서 다음 질문을 드립니다.
실제 현업에서는 dynamic_cast의 안전성을 포기하고 속도를 향상하기 위해 static_cast로 교체하는 경우가 있나요?
그러한 경우가 있다면, 프로그래머가 실수해서 잘못 캐스팅 경우를 방지하기 위해 어떻게 대응하나요? (수업에서 명시된 열거체으로만 검사하면, 열거체가 수정되거나, 프로그래머가 잘못된 열거체를 지정하는 경우, 문제가 생길 소지가 있어보입니다.)
답변 1
0
물론입니다. 사실 dynamic_cast는 그 정도로 자주 쓰지 않습니다.
함수를 하나 판 다음, enum을 체크해서 static_cast를 해도 되고,
기타 템플릿 흑마법으로 컴파일 타임에 캐스팅이 확정되게 할 수도 있습니다 (C++ 서버 강의 참고)
한마디로 100% 확신할 때라면 static_Cast를 이용하면 됩니다.