《C++ Primer》上的一个问题

yaopengpeng 2013-10-05 04:08:52
《C++ Primer》第四版,483页讲私有继承时有这么一句话:
如果是私有继承(private inheritance),基类的所有成员在派生类中为private成员。
这句话应该错了吧?基类的private成员在派生类中,应该不可访问吧?那就不是private成员了吧?
...全文
207 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
booirror 2013-10-07
  • 打赏
  • 举报
回复
总结如下: 只要是private ,就只能是类本身能访问的!和继承的方式没有关系 private继承只是将基类的public和protected变成了派生类的private,派生类依旧可以在自定义的public函数中访问基类原先的public和protected函数与变量。
凌典 2013-10-06
  • 打赏
  • 举报
回复
引用 5 楼 max_min_ 的回复:
只要是private ,就只能是类本身能访问的!和继承的方式没有关系
简短明了
Adol1111 2013-10-06
  • 打赏
  • 举报
回复
private继承后,基类的成员在派生类中被转化,原本是private的成员变成了不可访问,public、protect的成员变成了private。派生类本身仍然能访问转化成private的成员,但派生类的对象是不可访问的。如果这个派生类继续被继承,不论何种形式继承都被转化为不可访问,就是说public、protected -> private ->不可访问。 简单来说只有原本是private的成员被继承后才是不可访问的,继承后转化为private的成员仍然是可以被派生类本身所访问,但不能被其对象所访问。 你的理解可能有点出入,书上写的并没有什么问题,再仔细看看好了。
HarryHanWang 2013-10-06
  • 打赏
  • 举报
回复
无论何种继承方式,派生类都会包含基类的成员; 这与访问性无关。 具体来说: 1)基类的 private 成员,在派生类中依然存着,但派生类无法访问。 2)基类的 protected 成员,在派生类中存着,可访问;若 public / protected 继承,该类后续派生类可以访问,若 private 继承,该类的后续派生类无法访问。
max_min_ 2013-10-05
  • 打赏
  • 举报
回复
只要是private ,就只能是类本身能访问的!和继承的方式没有关系
qq120848369 2013-10-05
  • 打赏
  • 举报
回复
不管什么继承,基类的private在派生类里都不能访问。 private继承只是将基类的public和protected变成了派生类的private,派生类依旧可以在自定义的public函数中访问基类原先的public和protected函数与变量。
whdugh 2013-10-05
  • 打赏
  • 举报
回复
基类的所有成员在派生类中为private成员,然后派生类的用户(即对象)不能访问这些成员
relaxisland 2013-10-05
  • 打赏
  • 举报
回复
引用 楼主 yaopengpeng 的回复:
《C++ Primer》第四版,483页讲私有继承时有这么一句话: 如果是私有继承(private inheritance),基类的所有成员在派生类中为private成员。 这句话应该错了吧?基类的private成员在派生类中,应该不可访问吧?那就不是private成员了吧?
没错吧, 就是 基类的public成员 被派生类继承的时候变成私有了, 就是其他类的对象不能通过派生类 来访问这些成员了。
碼上道 2013-10-05
  • 打赏
  • 举报
回复
引用 楼主 yaopengpeng 的回复:
《C++ Primer》第四版,483页讲私有继承时有这么一句话: 如果是私有继承(private inheritance),基类的所有成员在派生类中为private成员。 这句话应该错了吧?基类的private成员在派生类中,应该不可访问吧?那就不是private成员了吧?
可能是翻译不准确,也没有原版看,可能应该这样讲,从基类继承过来的成员在派生类中均会为private成员

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧