Кент Рейсдорф. 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. Вы должны подумать о том, в какой раздел поместить свои функции.

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