※ 引述《LPH66 ((short)(-15074))》之銘言:
: ※ 引述《QQ29 (我愛阿蓉)》之銘言:
: : 2. private方式繼承老爸 可是變成老爸的東西我完全無法呼叫
: : 那繼承幹嘛??? 有什麼用意.........
: 不是我無法呼叫
: 而是外面不能透過我去呼叫老爸的東西
: 例如:
: class A {
: public:
: void f(){}
: };
: class B : private a
: {
: public:
: void g(){f();}
: };
: 那在其他地方如果有一個 B b;
: 則 b.g(); 是OK的 但 b.f(); 是不行的
: (順帶一提, 似乎是為了防止 polymorphism 呼叫的關係,
: 此例中 B* 到 A* 的轉換似乎是不會允許的...)
: 用意也許是想在父 class 之外提供一些功能
: 但因為父 class 有些功能可能影響我的工作
: 於是只好把繼承來的父 class 的 method 設成 private
你好L大 針對這問題我有個盲點
http://0rz.tw/9d2H8 之前看那種有個繼承表格 或是這網頁
他竟然寫老爸private的話就不繼承了
不過我認為他寫錯了
因為我不管怎麼樣改老爸的 sizeof(兒子) 大小都不變
應該都有繼承到
但是盲點在於
L大這例子b.g() 可以呼叫到f()
那要是f()改為 private之下變成無法呼叫
而之前看資料 有那個繼承表
原本老爸public 透過private繼承 會壓成 private
和原本 老爸private 透過private繼承 也是壓成 private
但這裡說的private 似乎對於兒子來講 一個可用一個不可用.......
讓我非常的疑惑
目前結論是
原本是 private,繼承之後兒子也不能使用
原本public 壓成 private,兒子可以用,可是外面的人不能,孫子也不能
那對兒子來說兩個管道都是private 差別在哪? 我如果要解釋該怎麼講
之前認知就是 "壓"
以繼承角度看 是哪種方式繼承
就"壓"
如果還是private狀態就是兒子不准用<===結論是錯的
以前上課傻傻的沒想那麼多 反正老爸private兒子就沒得用 要用就要老爸寫protected
現在發現這問題
請大大給予指教
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.207.187
※ 編輯: QQ29 來自: 140.113.207.187 (10/28 04:18)
※ 編輯: QQ29 來自: 140.113.207.187 (10/28 04:22)