繼承與接口1

下面程序輸出什麼:

#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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章