#include class A { private: int a_pri; protected: int a_pro; public: int a_pub; }; class B: public A { int b; //private: public: void f_b(void); }; //equivale a: //class B //{ private: // int a_pri; // int b; // protected: // int a_pro; // public: // int a_pub; // void f_b(void); //}; void B::f_b(void) { b = a_pub; //valido b = a_pro; //valido //b = a_pri; //invalido } class C:protected A { int c; public: void f_c(void); }; //equivale a: //class C //{ private: // int a_pri; // int c; // protected: // int a_pro; // int a_pub; // public: // void f_b(void); //}; void C::f_c(void) { c = a_pub; //valido c = a_pro; //valido //c = a_pri; //invalido } class D:private A { int d; public: void f_d(void); }; //equivale a: //class D //{ private: // int a_pri; // int a_pro; // int a_pub; // int d; // public: // void f_b(void); //}; void D::f_d(void) { d = a_pub; //valido d = a_pro; //valido //d = a_pri; //invalido } void main(void) { A AA; B BB; C CC; int m; m = AA.a_pub; //valido //m = AA.a_pro; //invalido //m = AA.a_pri; //invalido m = BB.a_pub; //valido //m = BB.a_pro; //invalido //m = BB.a_pri; //invalido //m = CC.a_pub; //invalido //m = CC.a_pro; //invalido //m = CC.a_pri; //invalido //m = DD.a_pub; //invalido //m = DD.a_pro; //invalido //m = DD.a_pri; //invalido cout << m << endl; }