C_and_CPP 板


LINE

※ 引述《littleshan (我要加入剑道社!)》之铭言: : ※ 引述《QQ29 (我爱阿蓉)》之铭言: 谢谢l大的解说 不过请容我再对以下提出一些问题.... : 比如说以下的 code : class Base { : public: : void foo(); : }; : class Derived : private Base { : public: : void bar() : { : foo(); // 呼叫 Base::foo() : } : }; : compiler 会把它转成这个样子... : class Derived { : private: : Base base_; : public: : void bar() : { : base_.foo(); : } : }; : 也就是说呢 : private 继承其实不过就是在子类别中 : 放入一个父类别的物件 : 并且把它设定为 private : 而 protected 继承也是一样的:在子类别中加一个父类别的物件 : 并且设定为 protected : 不过在使用 private/protected 继承时 : compiler 动了一点小手脚 : 使得子类别可以呼叫父类别的 protected 成员函式 : (如果你不用继承而是自己加一个物件 是无法呼叫 protected 函式的) : 这是使用 private/protected 继承 : 与「直接包一个物件进来」的不同之处 : 那麽 private/protected 继承要用在什麽时候? : 其实大部份的情况下 private/protected 继承都可以用物件包物件的方法来取代 若是以儿子来看 protected继承 就l大所讲的 其实多了一个protected: Base base_; base_.能够存取的范围 就老爸的protected 和public private继承 多了个 private: Base base_; base_.能去存取的范围 就也是老爸的protected和public 所以对儿子 能够存取的行为来讲 要用老爸的 都还是要儿子自己member function 间接的去存取老爸 所以我自认为 对儿子来讲 这两种继承方式 造成儿子 一样的权限 差别在於 如果这儿子有了孙子(public继承儿子) 孙子还是可以"多"得到 儿子(protected继承後 多产生的Base base_:) 让孙子可以去呼叫 super class... 若儿子是用private继承 孙子得到的Base base_ 是private的..... 所以他根本始用不了 所以就失去 呼叫super class的能力 不知道以上我的结论是否有错误 请给予指点 谢谢各位 : (这种写法也比较容易让其它人理解 也比较有弹性) : 但如果你还想呼叫 protected member function : 那就必须要继承了 : 请参考 Effective C++ 还有 Exceptional C++ : 这两本书都有谈到 private 继承 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.207.187
1F:推 littleshan:You got it! 10/28 16:10
2F:→ littleshan:protected 的目的就是「不让外界用,但要给儿子用」 10/28 16:11
3F:→ littleshan:不管这个关键字出现在哪,它的概念都是一样的 10/28 16:11







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP