下面程序输出什么:
#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
本文出自 “7883538” 博客,请务必保留此出处http://7893538.blog.51cto.com/7883538/1433391
原文:http://7893538.blog.51cto.com/7883538/1433391