#ifndef __protection_c #define __protection_c class C: protected A { public: void call_all_by_C(){ cout << endl << "all C can call: " << endl; public_print(); // Compiles. In fact, public_print() is a protected method of C because A is a protected Base class protected_print(); // Compiles. In fact, protected_print() is a protected method of C because A is a protected Base class // private_print(); // Does not compile: private_print() was not protected or public to start with } }; #endif