c++ protected成员及继承

来源:互联网 发布:手机科研数据处理软件 编辑:程序博客网 时间:2024/06/01 09:29

C++中说基类protected成员只能通过派生对象访问,不能通过通过基类对象访问(当然不能是私有继承)。并在原文中给出了一个示例。

但是并不是在任何地方都可以通过派生对象访问基类的protected成员的,只能在此派生类内部才能如此进行。也就是只能在类内部的对象,或者传入到内内部的对象或者引用才能有这个访问权限。而且派生类中只能通过该类型对象访问上一级基类的protected成员,不能访问基类的基类保护成员。

其访问权限如下表所示:

公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。

  1. 公有继承(public)

  公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。

  2. 私有继承(private)

  私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。

  3. 保护继承(protected)

  保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。

-----------------------------------------------------------
  private继承
  基类成员   private成员    public成员   protected成员
  内部访问    不可访问        可访问        可访问
  对象访问    不可访问        不可访问     不可访问
  ------------------------------------------------------------
  public继承
  基类成员   private成员   public成员    protected成员
  内部访问    不可访问       可访问            可访问
  对象访问    不可访问        可访问    类定义中可访问,外部不可访问
  ------------------------------------------------------------
  protected继承
  基类成员  private成员   public成员    protected成员
  内部访问  不可访问        可访问            可访问
  对象访问  不可访问        不可访问        不可访问
  ------------------------------------------------------------

0 0
原创粉丝点击