Re: [問題] 為何多型物件的解構子要用virtual?

作者: charleshu (開始學劇本的即興劇演員)   2021-01-05 00:47:21
※ 引述《d630200x (DOGE)》之銘言:
: 我對virtual的理解是將該函式宣告為可override
: 應該是類似對其產生function pointer,使得可以依據實際型態執行對應的function
: 但是我無法理解為何base class desturctor也需要宣告virtual
: 照理來說base與derived的刪除應該互不相關才對
: derived先把自己刪除,base再刪除自己
: 為何變成指標後base不宣告virtual後derived就不會被執行了?
:
作者: loveme00835 (髮箍)   2021-01-05 01:44:00
在 resolve function call 的時候並沒有 vtable 的觀念 [expr.call] 3. 如果看到 virtual 編譯器就要去 vtable 找實體那就無法解釋 [class.cdtor] 4 的行為.你這是從實作來理解語言設計

Links booklink

Contact Us: admin [ a t ] ucptt.com