Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1
Кент Рейсдорф. BORLAND C++BUILDER. Страница 83
Открытые функции-члены представляют собой интерфейс между пользователем и классом. Именно через открытые функции пользователи класса получают доступ к тем возможностям, которые предоставляет класс. Например, у вас есть класс для записи и воспроизведения звука. В этом случае открытыми могут быть функции типа Open(), Р1ау(), RecordQ, Save(), Rewind() и т.д.
Закрытые функции-члены предназначены только для использования самим классом. Их вызов пользователем класса не предполагается; они скрыты от внешнего мира. Часто при создании класса необходимо выполнить ряд инициализирующих действий. (Вы уже познакомились с конструктором, который автоматически вызывается при создании класса.) Для некоторых классов начальные процедуры требуют выполнения довольно большого объема кода. Чтобы не загромождать конструктор, лучше всего написать функцию Init(), которая будет вызываться из конструктора и выполнять все необходимые действия. Эта функция никогда не должна напрямую вызываться пользователем класса. При обращении к ней в неподходящий момент может произойти много неприятностей, поэтому для защиты класса (и пользователя) она должна быть закрытой.
Защищенные функции-члены — это функции, доступные для только для тех классов, которые являются производными данного класса. Доступ извне к этим функциям невозможен. Я еще не говорил о производных классах; для лучшего восприятия они будут обсуждаться позже, в разделе «Наследование».
Также как и члены-данные, функции-члены могут быть объявлены с модификатором static. Статические функции-члены более похожи на обычные функции. Они не имеют доступа к членам-данным класса. (Немного позже я скажу, зачем нужно это ограничение.) Статические функции-члены используются довольно редко, но иногда в них возникает необходимость. Например, некоторые функции интерфейса Windows API используют обратные вызовы, (callbacks) для выполнения повторяющихся действий. Если вы будете использовать подобные функции в своих классах, они должны быть объявлены статическими.