→ hsnuyi: (1) 用public是因為應該用內部的public protected private 06/29 11:56
→ hsnuyi: 來控制 而不是在繼承時控制 這種做法google就有很多討論 06/29 11:56
→ loveflames: 如果是要設計成interface(is/can-do/weak is-a) 06/29 12:04
→ loveflames: 那就應該採用public繼承 06/29 12:05
→ loveflames: 2要不要用public是看IBarListener裡面怎麼寫,只要確 06/29 12:06
→ loveflames: 保Foo跟IBarListener表面上行為一致就行 06/29 12:06
→ loveflames: 除非你要搞"controlled polymorphism" 06/29 12:11
→ loveflames: 上面這個技術在Exceptional C++有提過,算是C++特有 06/29 12:11
推 shadow0326: 大部分private繼承都可以用composition代替 06/29 13:16
→ tinlans: private 繼承不只是哲學上 is-a 關係不存在而已, 06/29 13:29
→ tinlans: 語言機制層級也會把多型禁用,寫成 private 繼承的話, 06/29 13:30
→ tinlans: IBarListener * 沒辦法指向 Foo 的 instance。 06/29 13:31
→ loveflames: private繼承基本上用在實作繼承,而且是能用組合時就 06/29 13:36
→ loveflames: 不用private繼承 06/29 13:36
→ loveflames: 除非要用到上面這個東西,這個也是protected繼承目前 06/29 13:37
→ loveflames: 的唯一用途 06/29 13:38
→ loveflames: 如果不侷限在物件導向,policy based design會很常看 06/29 13:44
→ loveflames: 到private繼承,因為policy相當於private base 06/29 13:44
→ lovejomi: @tinlans, base可以指向Foo阿 只是要在Foo裡面註冊 06/29 18:02
→ lovejomi: Controlled Polymorphism 06/29 18:09
→ lovejomi: Controlled Polymorphism 06/29 18:09
→ lovejomi: 還真不知道實際上用途...限制某些函數才能使用多型orz.. 06/29 18:09
→ lovejomi: . 06/29 18:09
→ loveflames: 這用途應該很稀有,我是有想過一個"視為"的關係 06/29 19:00
→ tinlans: 註冊? 我沒有聽過這種說法,是什麼特殊平台嗎? 06/29 23:19
→ tinlans: 還是說你寫個 getBase() 在 foo 讓它傳回 base? 06/29 23:21
→ tinlans: 這樣拿是可以,但語法上的多型還是依然不會作用。 06/29 23:27