我無法理解虛函數。當我重載一個虛函數時,是否僅僅調用了新的派生函數?或者是派生函數和基函數?因爲我注意到,當調用虛擬析構函數時,基類AND派生類析構函數被調用。虛析構函數調用都衍生和基地的析構函數
1
A
回答
4
析構函數都是在這個特殊方面的特殊成員函數。
如果你有一個虛基類的析構函數,然後它會正確地調用基地以及派生類的析構函數刪除多態性期間(在基類指針調用pointinf刪除對派生類對象。)。
然而,其他虛成員函數不共享相同的特殊地位,析構函數。只有爲適當的對象類型定義的函數纔會被調用。如果您需要調用任何其他函數,則需要明確地執行此操作。
2
一個派生類對象也不過是一種包裝的基類對象。 所以在析構函數的情況下,應該調用這兩個析構函數,這是一個預期的行爲。
在虛函數的情況下,你有機會替換功能的基礎class.so使用基類指針持有一個派生類對象將只調用虛函數在派生類中。
相關問題
- 1. 基地析構函數之前調用析構函數派生導致問題
- 2. C++虛擬析構函數
- 3. CRT虛擬析構函數
- 4. 虛擬析構函數?
- 5. C++虛擬析構函數
- 6. 在構造函數或析構函數中調用的虛函數的行爲
- 7. 構造函數和析構函數
- 8. 構造函數和析構函數 - C++
- 9. 析構函數和構造函數
- 10. 沒有虛擬構造函數但是虛擬析構函數
- 11. 析構函數被調用
- 12. 成員構造函數和析構函數調用的順序
- 13. 結構和析構函數
- 14. 如何從基類中調用非虛擬的析構函數?
- 15. 從基類構造函數調用派生類的虛函數?
- 16. 基類的構造函數和析構函數是否使用派生函數調用?
- 17. PostSharp攔截類構造函數和析構函數調用
- 18. 外部調用拷貝構造函數和析構函數
- 19. emplace_back調用移動構造函數和析構函數
- 20. 虛擬析構函數 - 誰調用基礎free()?
- 21. 受保護的構造函數與純虛析構函數
- 22. 如果基類析構函數是虛擬的,是否需要派生類析構函數定義?
- 23. 析構函數調用和指針
- 24. 是不是std:映射析構函數調用關鍵析構函數以及值析構函數?
- 25. 從C++中的虛析構函數調用虛擬方法
- 26. 編譯器如何處理派生析構函數中的基類析構函數調用?
- 27. 調用繼承構造函數/析構函數的順序,C++
- 28. Botan :: SecureVector - 構造函數中調用的析構函數?
- 29. 多態類中的虛析構函數
- 30. 非多態和非抽象基類中的虛析構函數
用什麼語言? – 2013-02-18 09:41:26
我在C++中測試 – sgtHale 2013-02-18 09:43:10