在Constructor 裡呼叫 Virtual Function
因為在constructor裡
subclass的成分並未完全實現
(包括 : vtable vptr等與virtual finction相關的隱藏變數)
所以完成的部分會是Base class的成分
所以程式並不會向你所想的一樣
不會去執行subclass所override的virtual function
而是會去執行base class 所定義的版本
PS: c++11 有override這個key word可以用
請大家善加利用,程式碼會好看很多
c++的一些小迷思 - 在Constructor 裡呼叫 Virtual Function
on
0 意見:
張貼留言