В целом:
- Частным пользователям доступны только
самим классом.
- Защищенные члены могут быть доступны только самому классу и его потомкам.
- Публичные участники доступны всем.
Таким образом, видимость увеличивается при переходе от частного к защищенному к общему.
В C ++ вы можете управлять тем, как видимость членов должна наследоваться потомкам, добавляя к имени базового класса ключевые слова private
, protected
или public
, что означает, что вы хотите видеть базовый класс члены должны быть максимально на этом уровне.
class A {
private:
int privA;
protected:
int protA;
public:
int pubA;
// privA can be accessed inside class A
// protA can be accessed inside class A
// pubA can be accessed inside class A
};
// pubA can be accessed by anyone
class B : public A {
// No change to visibility of members
// privA can't be accessed inside class B
// protA can be accessed inside class B
// pubA can be accessed inside class B
};
// pubA can be accessed by anyone
class C : protected A {
// Public members downgraded to protected
// privA can't be accessed inside class C
// protA can be accessed inside class C
// pubA can be accessed inside class C
};
// None of the members can be accessed outside class C
class D : private A {
// Public and protected members downgraded to private
// privA can't be accessed inside class D
// protA can't be accessed inside class D
// pubA can't be accessed inside class D
};
// None of the members can be accessed outside class D
В каждом из вышеперечисленных случаев классы-потомки, конечно, могут представлять своих собственных частных, защищенных и открытых членов.