15
내가 읽은 바에 따르면, 잘못된 런타임 dynamic_cast를 수행하면 bad_cast 예외를 던지거나 0을 반환 할 수 있습니다.dynamic_cast는 어떻게 실패합니까?
포인터를 캐스팅하는 경우 0을 반환한다고 말하는 것이 맞습니까?
즉 :
class Base { virtual void a(){} };
class Derived: public Base {};
int main() {
Base *base = new Base();
dynamic_cast<Derived*>(base);
return 0;
}
와 개체를 캐스팅 할 때이 bad_cast 예외를 던질 것?
즉 :
class Base { virtual void a(){} };
class Derived: public Base {};
int main() {
Base base;
Base& ref = base;
dynamic_cast<Derived&>(ref);
return 0;
}
으로 캐스팅하려고하면 컴파일 타임 오류가 발생하므로 확인이 올바른 것입니다. 감사. 기본 클래스를 다형성 (가상 함수 추가)하고 예외 캐스팅을 사용하여 예외를 던지기 위해 메시지를 편집했습니다. – NIGO