![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjHju9t2W7Uu_IT-T0cVPwF9380EPvD_WHOfDZ4bz7A9fJHrM5KKJzkEoAWUPEil3jU3GgTmwtPrTss5H8bgrhN1RUdbU34tLJY_M5TUWle2CiOOdnuj-7Yrk0KeujorQrdSpKk8NT50/s1600/private-20115_640.jpg)
Часто люди путаются с ограничениями, которые накладывают ключевые слова public, protected и private при наследовании классов в C++. Ниже приведен код, который наглядно иллюстрирует различия с правами доступа.
class A { public: int x; // доступно извне класса protected: int y; // недоступно извне класса, но доступно в методах наследника private: int z; // недоступно извне класса и в методах наследника }; class B : public A { // тут x будет public // тут y будет protected // z недоступен в B }; class C : protected A { // тут x будет protected // тут y будет protected // z недоступен в C }; class D : private A { // тут x будет private // тут y будет private // z недоступен в D };Стоит иметь ввиду, что если ничего не указывать при наследовании классов, то по умолчанию используется private. При наследовании структур умолчания другие — там будет public.