问一道面试宝典下面的有关问题(继承和接口)

问一道面试宝典上面的问题(继承和接口)
#include <iostream>
using namespace std;
class A
{
public:
void virtual f()
{
cout<<"A"<<endl;
}
};

class B:public A
{
public:
void virtual f()
{
cout << "B" << endl;
}
};

void main()
{
A *pa=new A();
pa->f();
B *pb=(B*)pa;
pb->f();

delete pa,pb;
pa=new B();
pa->f();
pb=(B*)pa;
pb->f();
};
问个问题:这里输出结果AABB  想问下:B *pb=(B*)pa;
pb=(B*)pa;  分别是什么意思,以及为什么是这个结果,求分析

------解决方案--------------------
http://blog.sina.com.cn/s/blog_6215fe350100fg9i.html