以下代码输出什么?why...

以下代码输出什么?
#include

class A
{
public:
void f1()
{
f2();
}
virtual void f2()
{
printf("A\n");
}
};

class B : public A
{
public:
void f2()
{
printf("B\n");
}
};

int main()
{
A *a = new B();
a->f1();
return 0;
}

输出B,因为f1是虚函数,看实际实例化的那个对象的类型

多态问题啊,你看下a实际是上B*类型的,所以最后运行时判断,调用子类的f1