我可以更改默认继承的访问器吗?

Can I change accessors from the default inheritance?

我了解到 public/protected 成员受保护继承保护,并且他们是私有继承。但是我可以将它们明确地更改为 public 吗(如下所示)?我其实不太明白"public: A::x".....

是什么意思
    class A
{
public:
    int x;
    int y;
protected:
    int z;
};

class B : protected A   
{
public:
    A::x;
};

class C : private B 
{
public:
    B::y;
    B::z;
};

A::x;

是一个 "access declarator",因此它确实允许您 "make" 继承成员在派生 class 的 public 区域可见。它还用于使 hidden overloaded functions 可见。然而,它现在在 C++ 中已被弃用,因此请尝试使用

using A::x;

示例:

#include <iostream>

class Foo
{
protected:
    int x{10};
};

class Bar : public Foo
{
public:
    using Foo::x; // makes x "public" here
};

int main()
{
   Bar bar;
   std::cout << bar.x << std::endl;
}
class B : protected A   
{
public:
    A::x;
};

这不再是有效的语法。 access declarator 现在已弃用。要更改继承成员的可访问性,您应该使用 using 关键字

class B : protected A   
{
public:
    using A::x;
};

现在,虽然 x 被继承为受保护的,但您明确地将其更改为 public 访问权限。所以现在这是可能的:

B b;
b.x = 0; //Ok
b.y = 0; //Error, cannot access protected member