在任何继承方式中,除了基类的private成员外,都可以在派生类中分别调整其访问控制。
调整格式
[public: | protected: | private: ] <基类名>:: <基类成员名>;
class A
{
public:
void f1();
void f2();
void f3();
protected:
void g1();
void g2();
void g3();
}
class B: private A
{
public:
A::f1;//把f1调整为public
A::g1;//把g1调整为public,是否允许弱化基类的访问控制要视具体的实现而定
protected:
A::f2;//把f2调整为protected
A::g2;//把g2调整为protected
}
class C: class B
{
public:
void h()
{
f1(); f2(); g1(); g2();//OK
f3(); g3(); //Error,此时f3,g3是基类B的private成员
}
}