基类的访问说明符

基类的成员可访问在派生类中的两个因素控件;这些因素控制对继承成员的访问该派生类中:

  • 该派生类是否声明基类使用 类头的公共 访问说明符 (类)定义类类型的语法部分介绍。

  • 哪些到该成员的访问是在基类。

下表显示了这些因素之间的交互以及如何确定的基类成员访问。

在基类成员访问

private

protected

Public

始终不可访问无论派生访问

私有在派生类,如果使用私有派生

私有在派生类,如果使用私有派生

 

保护在派生类,如果您使用受保护的派生

保护在派生类,如果您使用受保护的派生

 

保护在派生类,如果使用公共派生

在派生类中公共的,如果使用公共派生

下面的示例阐释了这一点:

// access_specifiers_for_base_classes.cpp
class BaseClass
{
public:
    int PublicFunc();    // Declare a public member.
protected:
    int ProtectedFunc(); // Declare a protected member.
private:
    int PrivateFunc();   // Declare a private member.
};

// Declare two classes derived from BaseClass.
class DerivedClass1 : public BaseClass
{
};

class DerivedClass2 : private BaseClass
{
};

int main()
{
}

在 DerivedClass1,成员函数 PublicFunc 是公共成员,并 ProtectedFunc 是受保护的成员,因为 BaseClass 是公共基类。 PrivateFunc 是私有的。 BaseClass,因此,它是不可访问的。任何派生类。

在 DerivedClass2,,因为 BaseClass 是私有基类,函数 PublicFunc 和 ProtectedFunc 被视为私有成员。 同样, PrivateFunc 是私有的。 BaseClass,因此,它是不可访问的。任何派生类。

可以声明一个派生类,而无需一个基类的访问说明符。 在这种情况下,因此,如果派生类声明使用 关键字,派生被视为私有。 ,如果派生类声明使用 struct 关键字,派生被视为公共的。 例如,下列代码:

class Derived : Base
...

等效于:

class Derived : private Base
...

同样,下面的代码:

struct Derived : Base
...

等效于:

struct Derived : public Base
...

请注意作为访问私有声明的成员函数或无法由派生类访问用于基类, friend 的声明,除非这些函数或类声明。

联合 类型不能具有基类。

备注

当指定私有基类,显式使用 private 该派生类的关键字,因此时可行用户了解成员访问。

请参见

参考

成员访问控件