/************************************************************************ *
The following example demonstrates inherited member access
rules.
* ************************************************************************/
// This example illustrates inherited member access rules.
class B
{
int a;
public:
int b,c;
void f(int) {}
protected:
int d;
void g(int) {}
};
class D1 : public B
{
int a;
public:
int b;
void h(int i )
{
g(i); // valid, protected B::g(int)
B::b = 10; // valid, B::b (not local b)
d = 5 ; // valid, protected B::d
}
};
class D2 : private B
{
int e;
public:
B::c; // modify access to B::c
void h(int i) { d = 5; } // valid,protected B::d
};
void main( )
{
int i= 1; // declare and initialize local variable
D1 d1; // create object of class d1
D2 d2; // create object of class d2
d1.a = 5; // error, D1::a is private in class D1
d2.b = 10; // error, B::b is inherited private to
// derived class D2
d2.c = 5; // valid, modified access from private to public
d2.B::c = 5; // valid, public B::c
d1.c = 5; // valid, B::c is inherited publicly
d1.d = 5; // error, B::d is protected in base class
d2.e = 10; // error, private D2::e
d1.g(i); // error, g(int) is protected in base class
d1.h(i); // valid
d2.h(i); // valid
}
/************************************************************************ *
* ************************************************************************/