作者newpuli (sheepu)
看板C_and_CPP
標題[問題] 不了解這個程式的輸出結果
時間Sat Sep 26 16:41:21 2009
#include <iostream.h>
class A{
public:
A() {};
virtual void methodOne(){ cout<<"A's methodOne" << endl; }
void methodTwo(){ cout <<"A's methodTwo" << endl; }
};
class B : public A{
public:
B() {};
virtual void methodOne(){ cout<<"B's methodOne" << endl; }
void methodTwo(){ cout <<"B's methodTwo" << endl; }
};
void main()
{
A *ptr = new B();
ptr ->methodOne();
ptr ->methodTwo();
delete ptr;
}
輸出結果如下:
B's methodOne
A's methodTwo
Press any key to continue
為什麼ptr ->methodTwo() 輸出結果是 A's methodTwo
而不是 B's methodTwo呢???
小弟不才~~請高手們賜教
謝謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.164.4.2
1F:→ james732:這就是 virtual function 存在的目的 09/26 16:52
2F:→ james732:A *ptr = new B(); <-- 一開始宣告的是 A* 09/26 16:52
3F:→ james732:所以如果不是 virtual function 的話 就會呼叫 A 的 09/26 16:53
4F:→ newpuli:謝謝賜教 09/26 17:25