→ uranusjr:1. C 語言沒有 class 更沒有 public/private, 是 C++ 吧 04/23 18:43
→ uranusjr:如果要存取很多不想公開的私有成員, 那代表你根本不應該 04/23 18:43
→ uranusjr:把這些東西分出去; 如果一定要分, 那就用 friend 04/23 18:44
→ uranusjr:不然就是直接把那個大 class 變成繼承 hierachy 的一部份 04/23 18:45
→ uranusjr:這樣就可以用 protected 來存取 04/23 18:46
→ uranusjr:用你在 OOAD 板寫的架構, 就是把 B 融進 A 裡面, 然後 C 04/23 18:48
→ uranusjr:系列都繼承 A 04/23 18:48
→ uranusjr:啊, 還有一個方法是, 如果你每次用到那些私有成員的原因 04/23 18:52
→ uranusjr:都一樣, 可以把同樣用到那些成員的邏輯移到 A 裡面 04/23 18:52
→ firejox:咦 不是原本就可以直接標記protected成員嗎? 04/23 18:59
→ iamstudent:是c++沒錯,標題正確內文打錯 04/23 19:11
→ iamstudent:如果直接把大的class作成那個繼承體系 04/23 19:20
→ iamstudent:後果是無法動態變化行為 04/23 19:21
→ iamstudent:所以才會希望寫成擁有另外一個繼承體系的指標 04/23 19:22
→ iamstudent:然後執行期可以變更成其他實體子類別,來切換功能性 04/23 19:23
→ iamstudent:所以架構是這樣子 A裡面有一個B*, C1~Cn繼承B 04/23 19:41
→ iamstudent:然後A裡面委託B的指標做事情,而B的指標可以指向C1~Cn 04/23 19:42
※ 編輯: iamstudent 來自: 140.113.210.62 (04/23 19:43)
※ 編輯: iamstudent 來自: 140.113.210.62 (04/23 20:52)