函數覆蓋 問題

 class Aide

{
public:
virtual void f()
{
cout << "A" << endl;
}
};
class B:public A
{
public:
virtual void f()
{
cout << "B" << endl;
}
};
int main()
{
A *pa = new A();
pa->f();
B *pb = (B*)pa;
pb->f();
delete pa, pb;
pa = new B();
pa->f();
pb = (B*)pa;
pb->f();
}
輸出結果爲AABB
在B *pb = (B*)pa; 轉化pa爲B類型並新建一個指針pb,將pa複製到pb。但pa的指針始終沒有發生變化,因此pb也指向pa的f函數。
pb = (B*)pa;轉化pa爲B類指針給pb賦值,但pa所指向的f函數是B類的f函數,因此pb所指向的f函數是B類的f函數。
相關文章
相關標籤/搜索