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