Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 리스트
- 객체지향
- list
- 큐
- 반복문
- 알고리즘
- 스택
- 차이점
- std::unordered_map
- 스택영역
- map
- vector
- 자료구조
- 공부
- 벡터
- static_cast
- MonoBehaviour
- 인프런
- 해쉬맵
- std::map
- rookiss
- 배열
- thread
- 힙영역
- 트리
- 기술면접
- 멀티쓰레드
- c#
- 프래그멘테이션
- Queue
Archives
- Today
- Total
호빵의 IT 개발소
static_cast와 dynamic_cast의 차이점은? 본문
static_cast vs dynamic_cast 차이
| 타입 검사 시점 | 컴파일 타임 | 런타임 (RTTI 기반) |
| 사용 목적 | 타입이 확실한 경우, 업캐스팅, 기본형 변환 등 | 안전한 다운캐스팅 (기본 → 파생 클래스) |
| 실패 시 동작 | 타입이 안 맞아도 컴파일러는 오류 없이 진행 → UB 가능 | 포인터: nullptr 반환레퍼런스: bad_cast 예외 발생 |
| RTTI 필요 여부 | ❌ 필요 없음 | ✅ 필요 (기본 클래스에 virtual 필요) |
| 성능 | 빠름 (런타임 검사 없음) | 상대적으로 느림 (RTTI 비용 발생) |
| 안전성 | 낮음 (타입이 틀려도 실행됨) | 높음 (실제 타입 체크 후 변환) |
면접 스타일 답변 예시:
static_cast는 컴파일 타임에 타입 체크를 수행하는 형 변환 연산자로
기본형 간 변환이나 상속 관계에서의 업캐스팅 또는 타입이 확실한 다운캐스팅에 사용됩니다.
다만 타입이 실제로 맞지 않아도 컴파일은 통과되기 때문에 런타임 오류나 undefined behavior가 발생할 수 있습니다.
반면 dynamic_cast는 런타임에 타입을 검사하는 안전한 형 변환입니다.
주로 다운캐스팅에 사용되며 RTTI를 기반으로 실제 타입이 맞는지 확인합니다.
타입이 맞지 않으면 포인터는 nullptr, 레퍼런스는 bad_cast 예외가 발생해서 안정성이 높습니다.
그래서 타입이 확실할 때는 static_cast
타입이 불확실하거나 외부 객체를 다룰 때는 dynamic_cast를 사용하는 것이 일반적인 패턴입니다.
'CS(전공지식) > 기술면접 준비' 카테고리의 다른 글
| 트랜잭션이란? (0) | 2025.04.14 |
|---|---|
| L-Value, R-Value란? (0) | 2025.04.04 |
| dynamic_cast란? (0) | 2025.04.03 |
| static_cast란? (0) | 2025.04.03 |
| 스마트 포인터란? (0) | 2025.04.03 |
Comments