[問題] 不了解這個程式的輸出結果

看板C_and_CPP (C/C++)作者 (sheepu)時間16年前 (2009/09/26 16:41), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
#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

09/26 16:52, , 1F
這就是 virtual function 存在的目的
09/26 16:52, 1F

09/26 16:52, , 2F
A *ptr = new B(); <-- 一開始宣告的是 A*
09/26 16:52, 2F

09/26 16:53, , 3F
所以如果不是 virtual function 的話 就會呼叫 A 的
09/26 16:53, 3F

09/26 17:25, , 4F
謝謝賜教
09/26 17:25, 4F
文章代碼(AID): #1AlTEqAR (C_and_CPP)
文章代碼(AID): #1AlTEqAR (C_and_CPP)