原文: 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
的私有变量。
公共继承中的可见性
访问性 | 私有变量 | 受保护变量 | 公共变量 |
---|---|---|---|
可从自己的类访问? | 是 | 是 | 是 |
可从派生类访问? | 否 | 是 | 是 |
可从二阶派生类访问? | 否 | 是 | 是 |
受保护继承中的可见性
访问性 | 私有变量 | 受保护变量 | 公共变量 |
---|---|---|---|
可从自己的类访问? | 是 | 是 | 是 |
可从派生类访问? | 否 | 是 | 是(继承为受保护的变量) |
可从二阶派生类访问? | 否 | 是 | 是 |
私有继承中的可见性
访问性 | 私有变量 | 受保护变量 | 公共变量 |
---|---|---|---|
可从自己的类访问? | 是 | 是 | 是 |
可从派生类访问? | 否 | 是(继承为私有变量) | 是(继承为私有变量) |
可从二阶派生类访问? | 否 | 否 | 否 |