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. По аналогии можно придумать примеры множественного наследования.