看板 C_and_CPP 關於我們 聯絡資訊
一個開發多年的codebase 裡面留有非常非常多的 switch (obj->type) { case type1: ... case type2: ... (手工static向下轉型處理) } 看到這裡當然會想著為什麼不用virtual來做 只是又想到個問題 這個obj的數量數以百萬計 如果用virtual 那多出來一個指向vt的指標對大量的小物件而言是很貴的 在此codebase中 obj的type是用bit field來節省空間 想問的是 在極大量的小物件 想作動態多形 而且一定要避免空間浪費 除了手工轉型+bit field 有什麼更好的實作方式嗎? compiler有沒有可能提供option讓virtual的內部實作是用bit field來記type? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.130.177.154 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1445930201.A.FD6.html ※ 編輯: Arton0306 (220.130.177.154), 10/27/2015 15:17:18
littleshan: 手動實作vtable 10/27 15:36
littleshan: 你可以把這些不同type的vtable存在一個陣列中 10/27 15:36
littleshan: 然後用 obj->type 當作 index,查出對應的 vtable 10/27 15:37
Arton0306: 多謝 ! 10/28 20:15