C++类多级派生时的访问属性

时间:2014-11-07 22:09    点击:

在实际项目开发中,经常会有多级派生的情况。如图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的保护基类。各成员在不同类中的访问属性如下:
  i f2 j k f3 f4 m f5 n
基类A 公用 保护 保护 私有          
公用派生类B 公用 保护 保护 不可访问 公用 保护 私有    
保护派生类C 保护 保护 保护 不可访问 保护 保护 不可访问 公用 私有

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

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

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

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

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

而且经过多次派生后,人们很难清楚地记住哪些成员可以访问,哪些成员不能访问,很容易出错。因此,在实际中,常用的是公用继承。

来源:未知//所属分类:基础教程/更新时间:2014-11-07 22:09
顶一下
(0)
0%
踩一下
(0)
0%
上一篇:C++保护成员和保护继承
下一篇:C++派生类的构造函数
相关内容