I understand that public/protected members are protected by protected inheritance, and they are private by private inheritance. But can I change them to public explicitly (as shown below)? I actually don't quite understand what it means by "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;
};