CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

关于继承

楼主9Q9Q()2001-08-03 08:23:04 在 C/C++ / C语言 提问

class   A  
  {  
  public:  
  void   f();  
  };  
   
  class   B:private   A  
        {  
  //A::f()在B类中是私有的  
  public:  
  void   g();//可以访问A::f()  
  };  
   
  class   C:public   B  
  {  
  //A::f()在C类中是私有的  
  public:  
  void   h();//不能可以访问A::f(),因为它在B类中是私有的  
  };  
   
  B   b;  
  b.f();//错,因为A::f()在B类中是私有的  
  C   c;  
  c.f();//错,因为C类继承了B类私有的A::f()  
  请告C::h()为何不能访问A::f()?  
  难道不能C::h()→B::g()→A::f()吗? 问题点数:10、回复次数:3Top

1 楼beyond_ml(man)回复于 2001-08-03 09:14:57 得分 5

哦?可我用g++编译下面的程序,可以通过啊。  
  class   A  
  {  
  public:  
  void   f();  
  };  
   
  class   B:private   A  
      {  
  public:  
  void   g()  
  {  
                  A::f();  
  }  
  };  
   
  class   C:public   B  
  {  
  public:  
  void   h()  
  {  
                  A::f();  
  }  
  };  
   
  int   main()  
  {}  
  Top

2 楼magicblue(小飞侠)回复于 2001-08-03 17:18:27 得分 5

beyond_ml的那段可以运行。我这里没有编译器,所以说说想法。A::f();这种调用法指明了调用A中的f(),有强制的意味。继承的保护,私有机制应该不会限制这样的调用。如果是这样的void   h(){f();}则会被继承机制限制。Top

3 楼9Q9Q()回复于 2001-09-10 09:24:22 得分 0

谢谢大家  
  Top

相关问题

  • 继承
  • 继承
  • 继承??
  • 继承!!!
  • 继承控件
  • 继承问题
  • 代码继承!
  • 继承问题
  • javascript的继承
  • 继承问题

关键词

  • 继承
  • 调用
  • 访问
  • 不能
  • 中是私有

得分解答快速导航

  • 帖主:9Q9Q
  • beyond_ml
  • magicblue

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo