Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабор_работа №5 ООП.doc
Скачиваний:
16
Добавлен:
21.04.2015
Размер:
376 Кб
Скачать
☆

2.2. Свойства класса

Классы содержат собственные переменные (свойства класса). Если образуется объект класса, то в его распоряжение предоставляется область оперативной памяти для хранения его свойств. Следовательно, каждый объект класса имеет собственную копию свойств. При создании объекта класса его свойства инициализируют с помощью конструктора класса. Свойства уничтожаются вместе с объектом класса, эти действия выполняет деструктор класса.

Свойства класса могут быть любого типа, кроме типа этого же класса. Они могут быть описаны с модификатором const, при этом они инициализируются один раз (с помощью конструктора класса) и не могут изменяться. Инициализация свойств при описании класса не допускается (это нужно делать в конструкторе).

Свойства класса могут быть описаны с атрибутами доступа public, protected или private.

2.3. Методы класса

Методы класса имеют доступ ко всем свойствам своего класса, могут быть определены как внутри класса, так и за его рамками. Они представляют единст­венную возможность доступа к private-свойствам своего класса. Методы класса могут быть определены с атрибутами доступа public, protected или private.

2.4. Специальные методы класса: конструктор и деструктор

Конструктор выделяет оперативную память для объекта класса и инициализи­рует его свойства. Он вызывается автоматически при создании объекта класса. Если при разработке структуры класса конструктор не был явно задан, то компилятор предоставляет конструктор по умолчанию. Конструктор по умолчанию предназначен только для выделения оперативной памяти для хранения свойств и методов класса. Для каждого объекта класса создается отдельная копия свойств. Методы класса не тиражируются.

Для конструкторов существует несколько важных правил:

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

  • конструктор не имеет никакого возвращаемого значения (даже void);

  • если конструктор описан явно, то конструктор по умолчанию не генерируется;

  • конструктор не наследуется.

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

Правила для деструктора аналогичны прави­лам для конструктора:

  • имя деструктора также совпадает с именем его класса, но предваряется символом «~» (тильдой):

~имя_класса();

  • деструктор не имеет никакого возвращаемого значения (даже void);

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

  • если в классе деструктор явно не описан, то компилятор ге­нерирует деструктор по умолчанию;

  • деструктор не наследуется (помечает память, занятую свойствами класса, как свободную).

Деструктор обязательно должен быть явно задан в классе, если в конструкторе ис­поль­зуются операторы динамического выделения памяти (new и delete). Если этого не сделать, то память, занимаемая объектом, при его уничтожении не будет помечена как свободная.

3. Наследование

Синтаксис описания класса при наследовании:

class имя_класса: [private | public | protected] имя_базового_класса

{тело класса};

где private | public | protected – ключи доступа (см. табл. 2). По умолчанию используется ключ доступа private.

Простым называется наследование, при котором производный класс имеет один базовый класс. Если базовых классов несколько, то они перечисляются через запятую с указанием ключей доступа.

Таблица 2

Модификация атрибутов доступа с помощью ключей доступа

Ключ доступа

Атрибут доступа в базовом классе

Атрибут доступа в производном классе

private

private

protected

public

–

private

private

protected

private

protected

public

–

protected

protected

public

private

protected

public

–

protected

public