540 __ _________________________Часть IV. Новые возможности C++
крытый. Вот объяснение в двух словах. Есть три спецификатора доступа для базовых классов — public, protected и private. В случае спецификатора public:
class В: public A {
};
открытые члены базового класса А являются открытыми членами производного класса в; аналогично, защищенные члены класса А являются защищенными также и в в (закрытые члены класса А, естественно, недоступны, если не объявлены как друзья — friend).
В случае спецификатора protected:
class В: protected A (
};
открытые и защищенные члены базового класса А являются защищенными членами производного класса в (тот же самый комментарий, что и в предыдущем случае, применим к закрытым членам и объявлениям friend).
В случае спецификатора private:
class В: private A (
};
открытые и защищенные члены базового класса А являются закрытыми членами производного класса в (тот же самый комментарий применим к закрытым членам и объявлениям friend).
Мы создаем специализированный класс salariedEmployee из более общего класса Employee. Заметьте, что нигде в классе salariedEmployee мы не объявляем данные или функции-члены для работы с номером социального страхования служащего на окладе; мы унаследовали их от класса Employee. Так что для экземпляров Employee или SalariedEmployee мы можем каждый раз
Просто вызывать SetSocialSecurityNumber ИЛИ GetSocialSecurityNumber:
Employee firstEmployee;
SalariedEmployee secondEmployee;
firstEmployee.SetSocialSecurityNumber(394772386) ;
secondEmployee.SetSocialSecurityNumber(399814325) ;
Некоторая дополнительная терминология: отношение наследования между классом SalariedEmployee и классом Employee — это отношение одиночного наследования, т. е., SalariedEmployee совместно использует структуру и поведение только с одним базовым классом, а именно, Employee. По аналогии можно придумать примеры множественного наследования.