C++类的3种继承方式

众所周知,C++类中的成员(函数/变量)拥有三种访问权限:

public:用该关键字修饰的成员表示公有成员,该成员不仅可以在类内可以被访问,在类外也是可以被访问的,是类对外提供的可访问接口;

private:用该关键字修饰的成员表示私有成员,该成员仅在类内可以被访问,在类体外是隐藏状态;

protected:用该关键字修饰的成员表示保护成员,保护成员在类体外同样是隐藏状态,但是对于该类的派生类来说,相当于公有成员,在派生类中可以被访问。

对一个类的派生类来说,在继承基类的过程中,不仅包含了基类的所有成员,还增加了自己的成员,而派生类中成员的访问权限则会因为继承权限方式的不同而不同。

相对于派生类成员的访问权限比较简单(派生类成员的访问权限就是取决于派生类中定义的权限),从基类中继承的成员的访问权限就相对较为复杂,这并不是简单地照搬基类的成员访问权限。基类成员在派生类中的访问权限与继承的方式有着密切的关系,在不同的继承方式下,访问权限也是不同的,总结如下:

**若继承方式是public,基类成员在派生类中的访问权限保持不变,也就是说,基类中的成员访问权限,在派生类中仍然保持原来的访问权限;**

**若继承方式是private,基类所有成员在派生类中的访问权限都会变为私有(private)权限;**

**若继承方式是protected,基类的共有成员和保护成员在派生类中的访问权限都会变为保护(protected)权限,私有成员在派生类中的访问权限仍然是私有(private)权限。**

注意:

  1. C++中struct与class的唯一区别是类内成员struct默认为public,class默认为private。
  2. 同一类的对象之间类内可以互相访问任意成员,派生类与基类之间类内可访问除私有成员外的任意成员,所有类外只能访问公有成员。
  3. 无论哪种继承方式,基类的公有和保护成员都可以被派生类的成员访问。
  4. 无论哪种继承方式,基类的私有成员都不可以被派生类的成员和对象访问。
  5. 只有公有继承时,基类的公有成员才可以被派生类的对象访问。
  6. 在被继承时,基类的保护成员及和公有成员行为一致。
  7. 在被类的对象访问时,保护成员和私有成员的行为一致。

文章结束了,但我们的故事还在继续
坚持原创技术分享,您的支持将鼓励我继续创作!