0
A
回答
3
如果A
聲明函數爲虛擬,並且B
繼承自A
並覆蓋它,則將調用B::g
。
如果它不是虛擬的,或者沒有被覆蓋,那麼將會調用A::g
。
如果B
不從A
繼承,那麼行爲是不確定的,任何事情都可能發生。你可以通過使用隱式轉換來避免這種錯誤,如果知道它是有效的,編譯器將只允許它,而不是最危險的轉換類型,這將允許大多數指針轉換,無論它們是否有意義。
相關問題
- 1. 構造函數中的調用基構造函數和其他構造函數
- 2. 爲什麼類的構造函數有新的其他類?
- 3. 構造函數調用其他構造函數
- 4. 如何在其他構造函數中調用構造函數?
- 5. 爲什麼複製構造函數調用其他類的默認構造函數?
- 6. 確定一個構造函數調用其基類的構造
- 7. 爲什麼要將原型的構造函數設置爲其構造函數?
- 8. 重載構造函數根據輸入類型調用其他構造函數
- 9. 爲什麼調用基構造函數?
- 10. 由其他調用構造函數
- 11. 爲什麼在調用複製構造函數之前調用構造函數?
- 12. 構造函數調用vb.net其他構造一拉C#
- 13. 首先調用虛擬基類的構造函數,然後按順序調用其他類的構造函數
- 14. 爲什麼在非MonoBehaviour類中調用多個構造函數?
- 15. 子類構造函數 - 爲什麼必須爲子類構造函數存在默認構造函數?
- 16. 爲什麼構造函數被調用,如果類有一個方法(函數)與他的名字?
- 17. 如何從c#中的構造函數調用其他構造函數?
- 18. 調用其他構造函數的構造函數:任何性能問題?
- 19. 與其他類常數值調用構造函數
- 20. 爲什麼使用線程來調用類的構造函數?
- 21. OOP - 如何調用一個函數類的構造函數
- 22. 爲什麼從繼承類調用基類構造函數
- 23. 從另一個構造函數調用默認構造函數
- 24. 在構造函數中調用另一個構造函數
- 25. 爲什麼調用複製構造函數而不是移動構造函數?
- 26. 爲什麼不調用主類中的默認構造函數?
- 27. 爲什麼不「foo f();」調用類「foo」的構造函數?
- 28. 爲什麼多次調用CDI bean類的構造函數
- 29. 爲什麼基類的構造函數首先調用?
- 30. 在構造函數中調用類成員的構造函數
是'B'的'A'基? g()聲明爲虛擬嗎? – Apokal
你爲什麼不試試呢?放入A的函數printf(「In A」);'和B的函數'printf(「In B」);'。編譯,執行,你會看到.. :-) – sternze
@sternze - 它可能是UB,測試可能沒用,甚至有害/誤導(特別是因爲這是一個C風格的演員)。 –