inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

캐스팅 4총사

속도를 위해 dynamic_cast를 static_cast로 변경하는 경우가 있나요?

181

Continue

작성한 질문수 1

0

dynamic_cast는 다운 캐스팅할 때 실행 시간에 타입을 검사하기 때문에 상대적으로 안전하지만 동작 속도가 static_cast보다 상대적으로 느리다고 알고 있습니다.

반대로 static_cast는 다운 캐스팅할 때 사용할 수 있지만, 실행 시간에 타입을 검사하지 않기 때문에 위험하고요.

이에 궁금한 점이 생겨서 다음 질문을 드립니다.

  1. 실제 현업에서는 dynamic_cast의 안전성을 포기하고 속도를 향상하기 위해 static_cast로 교체하는 경우가 있나요?

  2. 그러한 경우가 있다면, 프로그래머가 실수해서 잘못 캐스팅 경우를 방지하기 위해 어떻게 대응하나요? (수업에서 명시된 열거체으로만 검사하면, 열거체가 수정되거나, 프로그래머가 잘못된 열거체를 지정하는 경우, 문제가 생길 소지가 있어보입니다.)

 

c++ 게임수학 windows-api

답변 1

0

Rookiss

  1. 물론입니다. 사실 dynamic_cast는 그 정도로 자주 쓰지 않습니다.

  2. 함수를 하나 판 다음, enum을 체크해서 static_cast를 해도 되고,
    기타 템플릿 흑마법으로 컴파일 타임에 캐스팅이 확정되게 할 수도 있습니다 (C++ 서버 강의 참고)
    한마디로 100% 확신할 때라면 static_Cast를 이용하면 됩니다.

문제집은 없나요 수업을 어떻게 들어야 할지 모르겠어요

0

106

2

동적배열 Vector의 push_back 함수에서 조건문 질문

0

74

1

디버깅할때 메모리보는법 단축키가 뭐죠??

0

89

1

113-충돌처리 강의에서 22:26 부근의 SetPos()를 적용해도 충돌되지 않고 뚫고 지나가게 됩니다.

0

87

1

SaveFile에서 크래시 발생하는 분들 체크해보세요

1

70

1

수업자료 확인 부탁드립니다.

0

105

3

explicit을 붙였을 때 빨간줄이 뜨는 이유가 맞는지 궁금합니다.

0

100

0

22강에서 구조체와 포인터로 설명해주셨는데 패딩의 경우는 어떻게 되나요?

0

88

2

리소스 매니저 강의 18분 부근

0

89

1

[Service강의] owner -> shared_ptr

0

80

2

C#에서 생성자 관련 질문

0

83

2

특정 조건에서만 함수를 반환할 때

0

90

2

스택 empty

0

105

2

섹션4 배열실습 질문입니다.

0

132

1

섹션3 '파일분할' 강의 질문입니다.

0

99

1

Defines.h의 DECLARE_SINGLE관련 질문입니다.

0

110

1

세션8 우선순위 큐 pop함수의 Predicate 적용 관련 질문이 있습니다.

0

180

3

섹션9 함수 포인터 관련 질문입니다.

0

137

1

exercise_A 번 문제 해결방법에 대한 질문.

0

150

1

[강의명: virtual 소멸자] 자식 클래스의 소멸자에도 virtual 을 붙이시는 이유가 궁금합니다

0

198

2

Scene과 SceneManager 강의 수강 중 키보드 입력 오류

0

146

1

Window API 강의 수강 중 LARGE_INTEGER 타입 변환 오류

0

198

3

섹션15 스마트 포인터 20:00 질문이요!

0

127

1

55강 수업자료 빌드를 하면 이상합니다.

0

132

1