Re: [問題] 同class可以寫在不同的header跟source嗎
看板C_and_CPP (C/C++)作者littleshan (我要加入劍道社!)時間16年前 (2009/10/28 01:44)推噓0(0推 0噓 0→)留言0則, 0人參與討論串2/2 (看更多)
: ※ 引述《maboroshiga (幻)》之銘言:
: 我原有一個資料庫的處理程式碼 比如說 Db.h 跟 Db.cpp
: 裡面(只)有一個class 比如說叫 CDb 好了
: 這個class內有資料庫的建立/開啟/刪除
: 以及5個資料表的新增/刪除/修改
: 如果我覺得這個class太長 想依照資料表分成不同檔案 請問可行嗎?
: .cpp 應該是ok的 直接在 Db.cpp include就好 反正都是 CDb::FunctionName()
: 那header的部分要怎麼辦? 都寫 class CDb(){ .. } 一定不行
: 有什麼建議的方法嗎? 感謝~~!
你應該修改你的 class 設計
把「資料表」獨立成一個 class
然後讓「資料庫」「擁有」五張「資料表」
一般來說 class 的宣告一定會全部放進同一個 header file 中
但它的實作可以分散在許多不同的 .cpp
推
10/27 20:17,
10/27 20:17
請千萬不要這麼做
繼承不是拿來這樣惡搞的
→
10/27 20:33,
10/27 20:33
→
10/27 20:33,
10/27 20:33
推
10/27 22:13,
10/27 22:13
多重繼承會影響效能
因為在呼叫 member function 時
this pointer 必須視情況加上一個 offset
不過這不是什麼大問題
最大的問題是 這種情況違反了界面繼承的原則
CDb 並不是 (is-a) 一種 table
而是含有 (has-a) 一些 table
→
10/27 22:14,
10/27 22:14
→
10/27 22:14,
10/27 22:14
對 這是正道
推
10/27 22:29,
10/27 22:29
→
10/27 22:29,
10/27 22:29
→
10/27 22:30,
10/27 22:30
→
10/27 22:30,
10/27 22:30
→
10/27 22:31,
10/27 22:31
寫 inline function 才需要這樣
一般的 member function 可以分散寫在不同的 .cpp 中
然後再讓 linker 把它們連結起來即可
至於 inline function 如果長到需要放在另一個檔案中
那就要好好考慮它到底該不該 inline
事實上這種情況 compiler 應該都會把它視為一般的 function 而不去 inline
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.87.163
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章