Типы данных в языке C++__________________________________719

тых элементов, можно скрыть детали реализации защищенных элементов от ко-
нечного пользователя. Однако, в отличие от закрытых, защищенные элементы
остаются доступны для программистов, которые захотят производить от этого
класса производные классы, причем не требуется, чтобы производные классы объ-
являлись в этом же модуле.

В приведенном выше примере через объект данного класса можно получить
доступ только к функциям MyClass, SetA и GetA. Поля FA, В, С и функция F —
закрытые элементы. Это вспомогательные данные и функция, которые использу-
ют в своей работе открытые функции. Открытая функция MyClass с именем, сов-
падающим с именем класса, это так называемый конструктор класса, который
должен инициализировать данные в момент создания объекта класса. Присутст-
вие конструктора в объявлении класса не обязательно. При отсутствии конструк-
тора пользователь должен сам позаботиться о задании начальных значений дан-
ным — элементам класса.

Перед именами классов — родителей в объявлении класса также может ука-
зываться спецификатор доступа (в примере public). Смысл этого спецификатора
тот же, что и для элементов класса: при наследовании public (открытом наследова-
нии) можно обращаться через объект данного класса к методам и свойствам клас-
сов — предков, при наследовании private подобное обращение невозможно. По-
дробнее этот вопрос рассмотрен в разделе 12.13.4.

По умолчанию в классах (в отличие от структур) предполагается специфика-
тор private. Поэтому можно включать в объявление класса данные и функции, не
указывая спецификатора доступа. Все, что включено в описание до первого специ-
фикатора доступа, считается защищенным. Аналогично, если не указан специфи-
катор перед списком классов — родителей, предполагается защищенное наследо-
вание.

Объявления данных — элементов (полей) выглядят так же, как объявления
переменных или объявления полей в структурах:

<тип> <имена полей>;

В объявлении класса поля запрещается инициализировать. Для инициализа-
ции данных служат конструкторы, о которых упоминалось выше и которые рас-
сматриваются подробно в разделе 12.13.3.

Объявления функций — элементов в простейшем случае не отличаются от
обычных объявлений функций (см. главу 11 раздел 11.5.1).

После того, как объявлен класс, можно создавать объекты этого класса. Если
ваш класс не наследует классам библиотеки компонентов C++Builder, то объект
класса создается как любая переменная другого типа простым объявлением. На-
пример, оператор

MyClass MC, MC10[10], *Pmc;

создает объект MC объявленного выше класса MyClass, массив МС10 из десяти
объектов данного класса и указатель Рте на объект этого класса.

В момент создания объекта класса, имеющего конструктор, можно инициали-
зировать его данные, перечисляя в скобках после имени объекта значения данных.
Например, оператор

MyClass МС(3);

не только создает объект MC, но и задает его полю FA значение 3. Если этого не
сделать, то в момент создания объекта поле получит значение по умолчанию, ука-
занное в содержащемся в объявлении класса прототипе конструктора.

Создание переменных, использующих класс, можно совместить с объявлени-
ем самого класса, размещая их список между закрывающей класс фигурной скоб-
кой и завершающей точкой с запятой. Например: