Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1

Кент Рейсдорф. BORLAND C++BUILDER. Страница 83

Открытые функции-члены представляют собой интерфейс между пользовате­лем и классом. Именно через открытые функции пользователи класса получают доступ к тем возможностям, которые предоставляет класс. Например, у вас есть класс для записи и воспроизведения звука. В этом случае открытыми могут быть функции типа Open(), Р1ау(), RecordQ, Save(), Rewind() и т.д.

Закрытые функции-члены предназначены только для использования самим классом. Их вызов пользователем класса не предполагается; они скрыты от внешнего мира. Часто при создании класса необходимо выполнить ряд ини­циализирующих действий. (Вы уже познакомились с конструктором, который автоматически вызывается при создании класса.) Для некоторых классов началь­ные процедуры требуют выполнения довольно большого объема кода. Чтобы не загромождать конструктор, лучше всего написать функцию Init(), которая будет вызываться из конструктора и выполнять все необходимые действия. Эта функ­ция никогда не должна напрямую вызываться пользователем класса. При обра­щении к ней в неподходящий момент может произойти много неприятностей, поэтому для защиты класса (и пользователя) она должна быть закрытой.

Защищенные функции-члены — это функции, доступные для только для тех классов, которые являются производными данного класса. Доступ извне к этим функциям невозможен. Я еще не говорил о производных классах; для лучшего восприятия они будут обсуждаться позже, в разделе «Наследование».


Также как и члены-данные, функции-члены могут быть объявлены с модификатором static. Статические функции-члены более похожи на обыч­ные функции. Они не имеют доступа к членам-данным класса. (Немного позже я скажу, зачем нужно это ограничение.) Статические функции-члены используются довольно редко, но иногда в них возникает необходимость. Например, некоторые функции интерфейса Windows API используют обрат­ные вызовы, (callbacks) для выполнения повторяющихся действий. Если вы будете использовать подобные функции в своих классах, они должны быть объявлены статическими.

Web-дизайн (с) 2010 All rights reserved