В С++ члены класса классифицируются в соответствии с правами доступа на три категории:
– public (публичные) – любая функция программы имеет к ним доступ;
– private (частные) – доступ к ним имеют только функции-члены класса или дружественные функции;
– protected (защищенные) – доступ к ним имеют функции-члены класса или дружественные функции, а также производные классы.
При описании класса в его заголовке перечисляются (через запятую) все классы, которые являются для него базовыми. Возможность обращения к элементам этих классов регулируется с помощью спецификаторов доступа.
Общая форма наследования классов:
class имя_класса: спецификатор_доступа имя_базового_класса
{
. . . тело класса
};
Здесь спецификатор_доступа определяет, каким способом наследуется базовый класс.
Если спецификатор доступа опущен, по умолчанию подразумевается спецификатор public. В таком случае все публичные (public) и защищенные (protected) члены базового класса становятся соответственно публичными (public) и защищенными (protected) членами производного класса.
Если спецификатор доступа имеет значение private, то публичные (public) и защищенные (protected) члены базового класса становятся частными (private) членами производного класса.
Если спецификатор доступа принимает значение protected, то все публичные (public) и защищенные (protected) члены базового класса становятся защищенными (protected) членами производного класса.
Это можно изобразить в виде таблицы.
Таблица 1 – Спецификаторы доступа при наследовании