22
2019
09

C++ 继承方式的调整手册

  关于C++ 继承方式的调整,在任何继承方式中,除了基类的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成员
    }
}