下面程序输出什么:
#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