почему при вызове виртуального метода базового класса после dynamic_cast вызывается exception?
#include "stdio.h"
class A
{
public:
void doIt() { printf("A::doIt()\n"); }
virtual doItVirtual() { printf("A::doItVirtual()\n"); }
virtual ~A() {};
};
class B : public A
{
public:
void doIt() { printf("B::doIt()\n"); }
virtual ~B() {};
};
void main()
{
B *pB, *pB1;
pB = new B();
pB->doIt(); // B::doIt()
pB->doItVirtual(); // A::doItVirtual()
delete(pB);
A a;
pB1 = dynamic_cast<B*>(&a);
pB1->doIt(); // B::doIt()
pB1->doItVirtual(); // VC7(System.NullReferenceException) VC6(Access Violation)
}