作者QQ29 (我爱阿蓉)
看板C_and_CPP
标题Re: [问题] class继承问题 请教
时间Wed Oct 28 04:15:13 2009
※ 引述《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)