Re: [問題] 想請教一個C++考題
說到 constructor 不要呼叫 virtual function 的問題
最近才遇到一個 Java 與 C++ 行為很不一樣的範例
(難怪 Effective C++ 的作者有特別提到與 Java 的差異...可惜剛看書時候還不懂)
http://nopaste.csie.org/08053
這是化簡後的 Java code
簡單的說,parent class 留下了 foo() 這個函式供 child 去 override
當 clild 的建構子呼叫 parent 的建構子,就會執行 child 提供的 foo()
在 Java 裡,這程式會輸出 OK
http://nopaste.csie.org/bd5f7
改寫成 C++,直覺是寫成這個樣子
可是 C++ 在這裡永遠執行 parent 的 foo,因此只會印出 ERROR
遇到這問題的時候,還真的挺驚訝的
再翻開 Effective C++,才知道為什麼作者會寫
「在 Constructor 裡面,virtual function 不是 virtual function」了
(手邊沒書,不過應該是這個意思)
--
話說還有遇到另一個 Java 與 C++ 很不一樣的行為
可以參考隔壁的 #1BwwuMSS (java) 這篇文章
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.171.46
※ 編輯: james732 來自: 140.117.171.46 (06/08 01:33)
推
06/08 14:33, , 1F
06/08 14:33, 1F
推
06/08 19:55, , 2F
06/08 19:55, 2F
→
06/08 19:57, , 3F
06/08 19:57, 3F
→
06/08 20:00, , 4F
06/08 20:00, 4F
討論串 (同標題文章)