Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lectures_2.doc
Скачиваний:
28
Добавлен:
15.03.2015
Размер:
511.49 Кб
Скачать

Маркеры доступа

Для обеспечения инкапсуляции в языке С++ используются так называемые маркеры доступа (accesslabel). В качестве маркеров доступа используются следующие зарезервированные слова языка С++:

  • public(общедоступный),

  • protected(защищенный),

  • private(закрытый).

Указанные зарезервированные слова применяются в качестве меток к группе объявлений членов класса. Маркер доступа отделяется от объявления члена класса двоеточием. В теле класса обычно образуются разделы объявлений членов класса, наделенных одинаковыми правами доступа.

Все члены класса, находящиеся в public-разделе, доступны в любом клиентском коде, использующем возможности рассматриваемого класса. Члены класса, находящиеся вprivate-разделе доступны только функциям членам данного класса. Защищенный (protected) доступ имеет отношение к наследованию классов, и будет рассматриваться в соответствующем разделе курса

Если в теле класса нет ни одного маркера доступа, то права доступа определяются принципом умолчания. Для классов, использующих в заголовке зарезервированное слово class, в соответствии с этим принципом все его члены будут закрытыми. Для классов же, использующих в заголовке зарезервированное словоstruct, в соответствии с этим принципом все его члены будут открытыми. Этот же принцип умолчания действует для объявлений тех членов, которые записаны до первого маркера доступа.

Конструкторы

Здесь приводятся начальные сведения о конструкторах. В дальнейшем конструкторам будет посвящен специальный раздел.

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

  • имя конструктора совпадает с именем класса

  • конструктор не имеет типа возвращаемого значения.

  • конструктор нельзя вызвать для существующего объекта, как обычную функцию-член класса.

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

Пример. Конструкторы класса «Комплексные числа»

class Complex { public: Complex() { re_ = 0; im_ = 0; } Complex(double re, double im) { re_ = re; im_ = im; } // Определения других членов-функций private: double re_, im_ };

В теле определения класса Complex, приведенного выше, имеются два раздела объявлений членов класса. Вначале находится общедоступный раздел (public-раздел илиpublic-секция), который начинается после маркера и заканчивается перед маркеромprivate. Этот раздел содержит определения двух конструкторов. Первым записано определение так называемого конструктора умолчания. Конструктор умолчания по определению – это конструктор, не принимающий параметров. Вторым записано определения конструктор, принимающий два параметра.

Закрытый раздел класса (public-раздел) содержит объявления двух членов-переменных.

Соседние файлы в предмете Программирование