下面程序输出什么:

#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;
	}
};

int main()
{
	A* pa=new A();//定义了一个A类型的指针pa,pa指向A类
	pa->f();
	B* pb=(B*)pa;//定义了一个B类型的指针pb,pb也指向A类
	pb->f();

	delete pa,pb;//删除了pa、pb所指向的地址,但是pa,pb的指针类型依然是A类的
	pa=new B();//pa指向B类
	pa->f();
	pb=(B*)pa;
	pb->f();
	return 0;
}

这道题主要考察虚函数的覆盖虚函数的问题。虚函数是被子类同名函数所覆盖的。


输出结果是AABB