호빵의 IT 개발소

static_cast와 dynamic_cast의 차이점은? 본문

CS(전공지식)/기술면접 준비

static_cast와 dynamic_cast의 차이점은?

호빵Stack 2025. 4. 3. 19:42

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