dynamic_cast疑点
#include <iostream>
using namespace std;
class A
{
public:
int i;
virtual void show()
{
cout<<"class A"<<endl;
}
A()
{
i=1;
}
};
class B:public A
{
public:
int j;
void show()
{
cout<<"class B"<<endl;
}
B()
{
j=2;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
A a,*pa;
bool bad;
pa=&a;
try
{
bad=true;
B &rb=dynamic_cast<B &>(*pa);
}
catch(bad_cast)
{
cout<<"Reference failed from A & to B &"<<endl;
bad=true;
}
if(!bad)
{
B &rb=dynamic_cast<B &>(*pa);
rb.show();
}
system("PAUSE");
return 0;
}
程序输出结果是:Reference failed from A & to B &
不解,为什么会转换失败呢?请各位仁兄指教