看板 Marginalman 關於我們 聯絡資訊
避免使用 virtual 函式(若無必要) virtual 函式會引入一些額外的開銷, 因為需要透過虛函式表(vtable)間接調用。 如果不需要多型,可以避免使用 virtual。 虛函式的開銷來自哪裡? 虛函式表(vtable): 每個類型都有一個對應的虛函式表, 用來存儲該類型中虛函式的地址。 虛表指標(vptr): 每個物件包含一個指標指向虛函式表。 間接調用: 每次調用虛函式時, 程式會透過 vptr 指向的虛表來查找函數地址, 並進行一次間接函數調用,這增加了少量的執行時間。 何時不使用 virtual? 不需要多型行為時: 如果你不需要透過基類指標或引用調用子類的函數, 那就不需要 virtual 函數。 高效能要求的場景: 在高性能場景下,避免 virtual 函數的動態綁定能提升效能。 設計為不可覆寫的函數: 如果你希望某個函數無法被子類覆寫,則不要使用 virtual。 -- 真假 想知道更多C++小秘密 請等我繼續重讀Effective Modern C++ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.48.170 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1729853449.A.E52.html
sustainer123: 大佬 10/25 18:51
yam276: 本日Rust小秘密: C++的&&跟std::move在Rust預設內建 10/25 18:52
oin1104: 大師 我哭了 教我寫程式 10/25 18:52
v03516020: 謝謝,我頭痛起來了 10/25 18:53
devilkool: 謝謝 10/25 18:55
encorek22554: 謝謝 小孩喜歡 10/25 18:57
CCapocalypse: 大師 10/25 19:39