您当前的位置:首页 > 计算机 > 编程开发 > VC/VC++

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

时间:01-10来源:作者:点击数:

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


图 11.9

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

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

[例11.4] 如果声明了以下的类:

class A  //基类
{
public:
   int i;
protected:
   void f2( );
   int j;
private:
   int k;
};
class B: public A  //public方式
{
public:
   void f3( );
protected:
   void f4( );
private:
   int m;
};
class C: protected B  //protected方式
{
public:
   void f5( );
private:
   int n;
};

类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。

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

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

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

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

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

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门