Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1
Кент Рейсдорф. BORLAND C++BUILDER. Страница 82
Rect rect (10, 10, 200, 200);
int х = rect.left; // ошибка компиляции!
Компилятор выдаст сообщение Rect::left is not accessible (Rect:deft недоступен). Это означает, что left является закрытым членом класса и вы не можете обращаться к нему из программы. Если переменную left объявить в разделе public, то компиляция пройдет успешно.
Для работы с закрытыми членами-данными вы можете написать специальные функции. Одна функция будет возвращать значение определенного члена класса, а другая — изменять его значение. Это открытые функции- члены, работающие с закрытыми членами-данными.
Проиллюстрируем сказанное на примере. Пусть у вас есть две функции для обращения к члену left класса Rect:
Теперь, чтобы получить значение члена left, вы должны поступить следующим образом:
TRect rect;
int х = rect.GetLeft();
В некоторых случаях такое решение является избыточным. Тем не менее, использование специальных функций для изменения членов-данных класса дает одно важное преимущество — возможность контроля входных данных. Это позволяет вам следить за значениями, которые имеют члены-данные.
Для каждого экземпляра класса в памяти создается отдельная копия членов-данных. Исключение делается только для членов-данных, объявленных с модификатором static. В этом случае все экземпляры класса используют одну копию соответствующего члена. Изменение статического члена одним из экземпляров класса приводит к его изменению во всех остальных экземплярах. Статические члены-данные используются не очень часто, поэтому не беспокойтесь, если вы сейчас не совсем поняли, о чем шла речь.
Функции-члены класса — это функции, принадлежащие вашему классу. Они являются локальными по отношению к классу, в котором определены, и не существуют вне класса. Функции-члены могут быть вызваны только изнутри класса или через экземпляр класса. Они имеют доступ ко всем открытым, защищенным и закрытым членам-данным своего класса. Функции-члены могут быть объявлены в разделах private, protected или public. Вы должны подумать о том, в какой раздел поместить свои функции.