dynamic_cast<>()
(업 캐스팅이라고도 함)은 static_cast<>()
(다운 캐스트라고도 함)이 유형 런타임을 변환하지 않는 이유는 무엇입니까? 둘 다 클래스 계층을 통해 진행하는 데 사용됩니다. dynamic_cast<>()
이 런타임 유형을 형 변환해야하는 이유는 무엇일까?C++ 정적 및 동적 유형 캐스팅
-1
A
답변
3
둘 다 대개 다운 캐스팅 (기본 클래스에서 파생 클래스로)에 사용됩니다. 상영은 항상 안전하므로 명시 적 캐스트가 필요하지 않습니다. 의견에서 언급 한 바와 같이, 상영에 사용하는 경우 두 가지 모두 동등합니다 (암시 적 변환과 동일).
다운 캐스팅의 경우 static_cast
은 런타임 검사를 수행하지 않고 변환이 유효하지 않은 경우 정의되지 않은 동작을하기 때문에 더 빠르지 만 위험 할 수 있습니다. dynamic_cast
은 다형 유형에서만 사용할 수있는 런타임 유형 정보가 필요하지만 비 다형 유형에서도 작동합니다.
입문서에 자세히 설명되어 있습니다.
+0
상영을위한 암시 적 변환이 있지만 명시 적 변환을 원하는 경우가 있습니다. 이런 경우,'dynamic_cast'와'static_cast'는 동의어입니다. –
관련 문제
- 1. 캐스팅 및 동적 대 Java의 정적 유형
- 2. 동적 캐스팅 및 메시지 유형
- 3. C/Cython의 동적 캐스팅
- 4. 유형 ID, 동적 캐스팅 (업 캐스팅) 및 템플릿
- 5. 동적 유형 정적 UITableViewCell
- 6. 클래스 및 포인터 용 C++ 유형 캐스팅
- 7. 캐스팅 및 유형 질문
- 8. C++ : 다른 정적 및 동적 포인터 유형 삭제
- 9. C++ 라이브러리, 정적 및 동적
- 10. C#에서 객체에 캐스팅 유형 캐스팅
- 11. 유형 캐스팅 int 및 double
- 12. C++ \ CLI 프로젝트에서 유형 캐스팅
- 13. 내부 유형의 일반 목록으로 동적 유형 캐스팅
- 14. C에서 매개 변수의 동적 유형 캐스팅 #
- 15. 캐스팅, 일반 및 하위 유형
- 16. Java 유형 캐스팅 및 범위
- 17. CType 및 유형 캐스팅 예외
- 18. RavenDB : 정적 인덱스 캐스팅 및 정렬 문제
- 19. 사용자 지정 유형 캐스팅
- 20. 캐스팅 값 유형 상수
- 21. C++에서 정적 및 동적 메모리 할당
- 22. C# 동적 유형 변환
- 23. 동적 유형 c
- 24. C++ 동적 유형
- 25. C++ 동적 유형 구성 및 검색
- 26. Obj-C 영속성 및 동적 유형 검사
- 27. PHP의 동적 유형 검사
- 28. 동적 캐스팅?
- 29. 일반 유형 캐스팅 다루기
- 30. 구조체 멤버 캐스팅 유형
당신은 이것에 대해 잘못된 각도를 가지고 있습니다 : 그들이 그렇게하도록 설계 되었기 때문에 그들은 그렇게 행동합니다. – juanchopanza
두 개의 __cast 용어를 바꾸 었다고 생각하지만 'static_cast'는 상영보다 더 많이 사용됩니다. 그래, 그들은 전환 될 수 있지만, 나는'dynamic_cast'가 상영을하는 것을 본 적이 없다. 다운 캐스팅에 사용되는'static_cast '는 일반적으로 CRTP와 같은 것들에서 더 많이 발견됩니다. – chris
연구 노력이 전혀 필요하지 않습니다. – Shoe