簡體   English   中英

繼承和內聯?

[英]Inheritance and inline?

我最近做了很多閱讀,在覆蓋繼承(和虛函數)的同時,我仍然在“內聯”關鍵字上磕磕絆絆。 現在我知道inline在正常意義上是什么 - 編譯器可以用確切的代碼替換函數調用。 但是,我看到它在繼承方面提到的次數 - 在繼承中使用內聯是否有一些特殊的原因? 我不明白為什么一直被提及....

內聯函數在繼承/派生類/虛函數中有什么額外的作用?

是的,在虛擬功能上使用內聯是浪費時間。 必須通過虛函數表調用虛函數,虛函數表由函數指針組成。 指針不能調用內聯函數。 它必須作為一個真正的功能存在。

有一些例外。 在調用者知道確切的對象類型的情況下,它可以完全跳過虛函數表。

過度使用虛擬關鍵字可能會導致代碼速度變慢。 在編譯器可能能夠內聯和優化三個或四個小函數調用的情況下,使用虛函數它必須進行實際的函數調用,不對調用之間的內存或寄存器狀態做出假設。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM