打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C++类多级派生时的访问属性
在实际项目开发中,经常会有多级派生的情况。如图11.9所示的派生关系:类A为基类,类B是类A 的派生类,类C是类B的派生类,则类C也是类A的派生类;类B称为类A 的直接派生类,类C称为类A的间接派生类;类A是类B的直接基类,是类 C的间接基类。


图 11.9

在多级派生的情况下,各成员的访问属性仍按以上原则确定。

为了把多重继承说的更加详细,请大家先看下面的几个继承的类。

[例11.4] 如果声明了以下的类:
  1. class A //基类
  2. {
  3. public:
  4. int i;
  5. protected:
  6. void f2( );
  7. int j;
  8. private:
  9. int k;
  10. };
  11. class B: public A //public方式
  12. {
  13. public:
  14. void f3( );
  15. protected:
  16. void f4( );
  17. private:
  18. int m;
  19. };
  20. class C: protected B //protected方式
  21. {
  22. public:
  23. void f5( );
  24. private:
  25. int n;
  26. };
类A是类B的公用基类,类B是类C的保护基类。各成员在不同类中的访问属性如下:
 if2jkf3f4mf5n
基类A公用保护保护私有     
公用派生类B公用保护保护不可访问公用保护私有  
保护派生类C保护保护保护不可访问保护保护不可访问公用私有

根据以上分析,在派生类C的外面只能访问类C的成员函数f5,不能访问其他成员。 派生类C的成员函数f5能访问基类A的成员i、f2、j和派生类B的成员f3、f4。派生类B 的成员函数f3、f4能访问基类A的成员i、f2和j。

通过以上分析,可以看到:无论哪一种继承方式,在派生类中是不能访问基类的私有成员的,私有成员只能被本类的成员函数所访问,毕竟派生类与基类不是同一个类。

如果在多级派生时都采用公用继承方式,那么直到最后一级派生类都能访问基类的公用成员和保护成员。

如果采用私有继承方式,经过若干次派生之后,基类的所有的成员已经变成不可访问的了。

如果采用保护继承方式,在派生类外是无法访问派生类中的任何成员的。

而且经过多次派生后,人们很难清楚地记住哪些成员可以访问,哪些成员不能访问,很容易出错。因此,在实际中,常用的是公用继承。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
20、继承和派生(一)
C++之继承与派生(1)
C++继承详解
鸡啄米:C 编程入门系列之三十七(继承与派生:派生类对基类成员的访问控制之公有继承)
04选择题: 继承
c++--公有继承,私有继承和保护继承
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服