static_cast 연산자는 표현식을 type-id 유형으로 변환하지만 변환의 안전성을 보장하기 위한 런타임 유형 검사는 없습니다.
① 클래스 계층 구조에서 기본 클래스(상위 클래스)와 파생 클래스(하위 클래스) 간의 포인터 또는 참조를 변환하는 데 사용됩니다.
업캐스팅(파생 클래스의 포인터 또는 참조를 기본 클래스 표현으로 변환)은 안전합니다.
다운캐스팅(기본 클래스 포인터 또는 참조를 파생 클래스 표현으로 변환)을 수행할 때는 동적 유형 검사가 없으므로 안전하지 않습니다.
출처: http://baike.baidu.com/link?u...
궁금한 점은 굵은 글씨가 무슨 뜻인가요? 안전하지 않다은 무슨 뜻인가요?
예를 들어, 동일한 상위 클래스의 서로 다른 하위 클래스의 객체를 서로 변환하여 유형 오류를 발생시키는 상위 클래스
으아아아A
,派生出两个子类B
和C
,有一个A
类指针或引用a
指向了一个B
类对象b,此时用static_cast
进行下行转换,可以将其转换成C
类的对象(指针或引用),此时就会出现不安全,因为C
类的一些成员函数/变量对B
类的对象不适用。简单来说,就是可以利用
static_cast
가 있습니다.예: