[問題] 在父類別呼叫子類別所實作的 virtual function
直接看程式碼比較快:
#include <iostream>
using namespace std;
class Parent
{
public:
Parent() { init(); }
virtual void init() {
cout << "parent init" << endl;
}
};
class Child : public Parent
{
public:
Child() : Parent() {}
virtual void init() {
cout << "child init" << endl;
}
};
int main()
{
Child child;
return 0;
}
原以為輸出結果應該是 child init, 但實際跑出來是 parent init,
以前寫 Java 常利用這一招來設計 event-handling 機制,
沒想到在 C++ 卻沒辦法使用,
很顯然 C++ virtual function 動態連結的方式跟我想的不一樣,
想請問有什麼方法可以克服這個問題? 謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.147.227.34
→
11/23 13:31, , 1F
11/23 13:31, 1F
→
11/23 13:36, , 2F
11/23 13:36, 2F
→
11/23 13:42, , 3F
11/23 13:42, 3F
推
11/23 13:43, , 4F
11/23 13:43, 4F
推
11/23 18:25, , 5F
11/23 18:25, 5F