1

How is base class access specification different from member access specification?

user1824518
  • 213
  • 1
  • 4
  • 12

1 Answers1

2

Base class access specification decides about base class' members access specification in your class. They provide a way to hide base class' members if you don't want them to appear publicly in your class. They doesn't affect visibility of members of your class though.

C++ FAQ explains this issue quite nicely.

class Base
{
protected:
    int A;
public:
    int B;
};

class Derived1 : public Base
{
    // Derived1::A outside class is seen as protected
    // Derived1::B outside class is seen as public
};

class Derived2 : protected Base
{ 
    // Derived1::A outside class is seen as protected
    // Derived1::B outside class is seen as protected
};

class Derived3 : private Base
{ 
    // Derived1::A outside class is seen as private
    // Derived1::B outside class is seen as private
};
Spook
  • 25,318
  • 18
  • 90
  • 167