复习重载、虚函数(覆盖、多态)、隐藏,方便理解: class Base { public: virtual int A(); int foo(void); int foo(int); // 重载函数foo() int a; protected: int B(); int b; private: virtual int C(); int C(Base* pBase); int c; public: Base* pbase; }; int Base::A() { a = 1; return a; } int Base::B() { b = 2; return b; } int Base::C() { c = 3; return c; } int Base::C(Base* pBase) { // 可以访问pBase的所有属性成员函数 // 包括protected和private属性成员函数 return pBase->C(); // OK } class Derived: public Base { public: virtual int A(); // 虚函数、多态、覆盖 int foo(double); // 隐藏基类函数foo() int a; protected: int B(); // 隐藏基类函数 int b; int foo(long); // 隐藏基类函数foo()、该类内部的foo(double)构成重载关系 private: virtual int C(); // 多态、覆盖、虚函数 int C(Base* pBase); int c; public: Derived* pdrived; }; int Derived::A() { a = 4; return a; } int Derived::B() { b = 5; return b; } int Derived::C() { c = 6; return c; } int Derived::C(Base* pBase) { // 只能访问pBase的public属性成员函数 return pBase->A(); }