原文: https://www.programiz.com/cpp-programming/public-protected-private-inheritance
在本文中,您将学习在 C++ 中使用公共,保护和私有继承。 您将通过示例学习在何处以及如何使用它。
您可以从具有不同访问控制的基类中声明派生的类,即公共继承,受保护的继承或私有继承。
#include <iostream>using namespace std;class base{.... ... ....};class derived : access_specifier base{.... ... ....};
注意:可以使用public,protected或private关键字代替上述中使用的access_specifier术语。
C++ 中的公共继承,保护继承和私有继承的示例
class base{public:int x;protected:int y;private:int z;};class publicDerived: public base{// x is public// y is protected// z is not accessible from publicDerived};class protectedDerived: protected base{// x is protected// y is protected// z is not accessible from protectedDerived};class privateDerived: private base{// x is private// y is private// z is not accessible from privateDerived}
在上面的示例中,我们观察到以下内容:
base具有三个成员变量:x,y和z,它们分别是public,protected和private成员。publicDerived继承了变量x和y为公共变量和受保护变量。z不是继承的,因为它是base的私有成员变量。protectedDerived继承变量x和y。 这两个变量都被保护。z不继承
如果我们从protectedDerived派生一个类derivedFromProtectedDerived,则变量x和y也将继承到派生类。privateDerived继承变量x和y。 这两个变量都变为私有。z不继承
如果我们从privateDerived派生类derivedFromPrivateDerived,则变量x和y不被继承,因为它们是privateDerived的私有变量。
公共继承中的可见性
| 访问性 | 私有变量 | 受保护变量 | 公共变量 |
|---|---|---|---|
| 可从自己的类访问? | 是 | 是 | 是 |
| 可从派生类访问? | 否 | 是 | 是 |
| 可从二阶派生类访问? | 否 | 是 | 是 |
受保护继承中的可见性
| 访问性 | 私有变量 | 受保护变量 | 公共变量 |
|---|---|---|---|
| 可从自己的类访问? | 是 | 是 | 是 |
| 可从派生类访问? | 否 | 是 | 是(继承为受保护的变量) |
| 可从二阶派生类访问? | 否 | 是 | 是 |
私有继承中的可见性
| 访问性 | 私有变量 | 受保护变量 | 公共变量 |
|---|---|---|---|
| 可从自己的类访问? | 是 | 是 | 是 |
| 可从派生类访问? | 否 | 是(继承为私有变量) | 是(继承为私有变量) |
| 可从二阶派生类访问? | 否 | 否 | 否 |
