{zp father ("Худанина H.M. ", 2000 . 0) ;
zpp fatfer_prize ("Худанина H.M.", 2500.0, 500.0) ;
f atner . show_sal () ;
fatner_prize . show_salp () ;}
В результат решения данной программы на экран дисплея будет выведено:
Оклад Худанина Н.М. : 2000 рублей.
Оклад Худанина Н.М.: 2500 рублей
(щемия 500 рублей)
В рассмотренном примере элементы базового класса разделены на общие (public) и частные (private). К общим элементам базового класса можно обратиться из производного класса, как будто эти элементы определены внутри производного класса. Для обращения к частным элементам базового класса использовалась интерфейсная функция базового класса show_sal. Если объявить частные элементы базового класса защищенными (protected), то к ним можно обращаться из класса-наследника напрямую, как будто они являются общими. Для остальной части программы защищенные элементы базового класса останутся частными, доступными только через интерфейсные функции.
Допустим, что определение базового класса в предыдущем примере выполнено следующим образом:
class zp {
protected:
char name[64];
float sal;
public:
zp(char *,float);
void show_sal(void) ; };
Теперь к элементам name и sal можно обратиться из производного класса напрямую, например, так:
...zpp:: in_dat (void) {
cout«"введите имя и зарплату"«еndl;
cin»name»sal; }...
Таким образом, если нужно обратиться из производного класса напрямую к частным элементам базового класса, то целесообразно объявить эти элементы в базовом классе защищенными (protected).