109
Функция с тем же именем, что и класс, снабженная символом тильда (~), на-
зывается деструктором этого класса. Деструктор удаляет объекты класса, кото-
рые завершили свою работу, тем самым, освобождая память для повторного ис-
пользования системой. Деструкторы редко используются с простыми классами.
Их применение имеет смысл в классах с динамическим распределением памяти
под объекты (например, для массивов и строк).
В рассматриваемой программе функции-элементы printMilitary и print-
Standard не получают никаких аргументов, потому что они печатают данные-
элементы определенного объекта типа Time. Это уменьшает вероятность пере-
дачи неверных аргументов.
Обычно классы не создаются на пустом месте. Часто они являются произ-
водными от
других классов или включают объекты других классов как элемен-
ты. Создание новых классов на основе уже существующих называется насле-
дованием. Включение классов как элементов других классов называется
композицией.
16.2. Доступ к элементам класса и их область действия
Данные-элементы класса и функции-элементы имеют областью действия
класс. Функции, не являющиеся элементом класса, имеют областью действия
файл. При области действия класс элементы класса непосредственно доступны
всем функциям-элементам этого класса, и на них можно ссылаться просто по
имени. Вне класса к его элементам можно обращаться либо через имя
объекта,
либо ссылкой на объект, либо с помощью указателя на объект. Переменные, оп-
ределенные в функции- элементе, известны только этой функции. Если функция
- элемент определяет переменную с тем же именем, что и переменная в области
действия класс, то последняя становится невидимой в области действия функ-
ция. Операции, используемые для доступа
к элементам класса, аналогичны опе-
рациям, используемым для доступа к элементам структуры. Программа, приве-
денная на рис. 16.4, иллюстрирует доступ к открытым элементам класса с
помощью операций выбора элемента. Она использует простой класс, названный
count, с открытым элементом данных x типа int и открытой функцией-
элементом print. Программа создает три экземпляра
переменных типа Count –
counter, counterRef (ссылка на объект типа Count) и counterPtr (указатель на
объект типа Count). Переменная counterRef объявлена, чтобы ссылаться на
counter, а переменная counterPtr объявлена, чтобы указывать на counter.
// Демонстрация операций доступа к элементам класса . и ->
#include <iostream.h>
class Count { // простой класс Count
public:
int x;
void print () { cout << x << endl; }
};
Рис. 16.4
main ( )