我想分析實現多態的各種方法之間的權衡。我需要一個具有一些相似性和成員函數差異的對象列表。我看到的選項如下:c + +交換與成員函數指針與虛擬繼承
- 在每個對象中都有一個標誌,並且在每個函數中都有一個switch語句。 該標誌的值將每個對象指向其每個函數的特定部分 。
- 在對象中有一個成員函數指針數組,這些成員函數指針在構造時分配爲 。然後,我把那個函數指針調到 得到正確的成員函數。
- 有一個具有多個派生類的虛擬基類。其中一個 的缺點是,我的列表現在必須包含指針,而不是對象本身。
我的理解是,選項3中列表中的指針查找將花費比選項2的成員函數查找更長的時間,因爲確保了成員函數的接近度。
這些選項的一些優點/缺點是什麼?性能優於可讀性。 有沒有其他的多態性方法?
1.可怕的,2.稍微可怕的,3.你最好的選擇,4.你需要多態嗎?通常你可以通過使用模板來解決這個問題...... – Nim
「我的優先考慮是性能優於可讀性。」 - 大錯特錯。如此可怕的錯誤。即使你需要性能,爲什麼你手動重新實現虛擬功能,如果語言已經提供了它們(通過多態 - vtables任何人?)? – 2013-12-23 09:37:49
「我的優先考慮是性能優於可讀性。」在你有權說出這個句子之前,你應該學習基準/簡介代碼。 –