推 hilorrk:分成不同class 用繼承? 10/27 20:17
請千萬不要這麼做
繼承不是拿來這樣惡搞的
→ maboroshiga:嗯有想過class CDb繼承5個table的class 10/27 20:33
→ maboroshiga:只是不知道這樣會不會影響效能 10/27 20:33
推 layan:應該不會, 除非你有 virtual function, 不然不會 10/27 22:13
多重繼承會影響效能
因為在呼叫 member function 時
this pointer 必須視情況加上一個 offset
不過這不是什麼大問題
最大的問題是 這種情況違反了界面繼承的原則
CDb 並不是 (is-a) 一種 table
而是含有 (has-a) 一些 table
→ VictorTom:其實我覺得, .cpp可以分開實作, 但.h的宣告仍然通通包在 10/27 22:14
→ VictorTom:一起就可以了吧?_? 10/27 22:14
對 這是正道
推 layan:話說 你可以在 class XXX { } <= 裡面 include "xxx.inl" 10/27 22:29
→ layan:也就是說你可以把五個表的函式寫在 5 個 xxx.inl files 裡 10/27 22:29
→ layan:然後在你的 class CDb { } <= 裡面寫 #include 它們就行了 10/27 22:30
→ layan:不過這樣很鳥 XDXD 看的人也痛苦 10/27 22:30
→ layan:不見得要.inl,附檔名.h也行,只是以前看到的做法是用.inl 10/27 22:31
寫 inline function 才需要這樣
一般的 member function 可以分散寫在不同的 .cpp 中
然後再讓 linker 把它們連結起來即可
至於 inline function 如果長到需要放在另一個檔案中
那就要好好考慮它到底該不該 inline
事實上這種情況 compiler 應該都會把它視為一般的 function 而不去 inline
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.87.163