인터페이스에서 파생 클래스로 다운 캐스트하려고하지만 가상 DLL이이를 종료합니다.가상 인터페이스 Dtor && Dynamic_Cast
class IFOO
{
public:
virtual ~IFOO(){};
virtual size_t index() PURE;
};
class FOO : public IFOO
{
public:
FOO() : size(5){};
~FOO(){};
virtual size_t index(){ return index; };
size_t index;
};
int main() {
IFOO* A = &FOO();
FOO* B = dynamic_cast< FOO* >(A);
return 0;
}
왜 이렇게 되나요?
예상되는 동작 및 얻는 동작을 설명하십시오. –
RTTI를 사용할 수 있으므로 런타임 검사가 수행되고 파생 클래스에 대해 캐스트가 수행됩니다. 내 인터페이스에서 가상 dtor를 제거하지 않으면 NULL 포인터가 계속 표시됩니다. –
'PURE' :'= 0'에 대한 매크로입니까? 왜'= 0'을 입력하지 않는가? –