決不在基類的構造和析構過程中調用virtual函數 -开发者知识库

決不在基類的構造和析構過程中調用virtual函數 -开发者知识库,第1张

   這是一個很容易讓人迷惑的principle!按照我們對C 多態性的理解:定義基類中某個函數為虛函數是為了允許用基類的指針來調用子類的這個函數。通過virtual函數實現程序運行時候的動態調用。

        However,是不是只要在基類中使用了virtual函數就一定能夠實現這種動態調用呢?是否只要在base class中定義了虛函數,那么在通過基類指針指向子類的時候就一定會調用子類實現的對應的virtual函數呢?

        我們來實際驗證一下:

        假設有一個class繼承體系,用來模擬股市交易如買進、賣出等。這樣的交易一定要經過審計,所以每當創建一個交易對象,在審計日志中需要創建一筆適當的記錄。下面是一個看似頗為合理的做法:

      

[cpp] view plain copy print ?

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复