/*
(非繼承的類)
如果一個類中有虛函數,則該類就有一個虛函數表。虛函數表是屬於類的,不屬於類對象。在編譯的時候確定,存放在只讀數據段。
每一個實例化的類對象都有一個虛函數表指針,指向類的虛函數表。虛函數表指針屬於類對象。存放在堆上或者棧上。
(繼承的類)
如果基類中有虛函數,派生類實現或沒實現,都有虛函數表。基類的虛函數表和派生類的虛函數表不是同一個表。
如果派生類沒有重寫基類的虛函數,則派生類的虛函數表和基類的虛函數表的內容是一樣的。
如果派生類重寫了基類的虛函數,則在派生類的虛函數表中用的是派生類的函數。
*/
/*
(多繼承)
含有虛函數的基類有多少個,派生類就有多少個虛函數表指針,派生類有就有多少個虛函數表。
派生類有的而基類沒有的虛函數,添加在第一個虛函數表中。
虛函數表的結果是* 表示還有下一個虛函數表
虛函數表的結果是0 表示是最后一個虛函數表
*/