Информатика и технология программирования


Создание и уничтожение объектовКонструкторы и деструкторы


Процесс создания и уничтожения объектов класса обычно сопровождается некоторыми действиями (инициализация данных, резервирование памяти, ресурсов и т.д.), которые производятся функциями-элементами специального вида. Элементы-функции, неявно вызываемые при создании и уничтожении объектов класса называются КОНСТРУКТОРАМИ и ДЕСТРУКТОРАМИ . Они определяются как элементы-функции с именами, совпадающими с именем класса. Конструкторов для данного класса может быть сколь угодно много, если они отличаются формальными параметрами, деструктор же всегда один и имеет имя, предваренное символом "~".

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

Момент вызова конструктора и деструктора определяется временем создания и уничтожения объектов:



-для статических и внешних объектов -конструктор вызывается перед входом в main , деструктор -после выхода из main() . Конструкторы вызываются в порядке определения объектов, деструкторы -в обратном порядке;



-для автоматических объектов -конструктор вызывается при входе в функцию (блок), деструктор -при выходе из него;



-для динамических объектов -конструктор вызывается при выполнении оператора new , деструктор -при выполнении оператора delete .

В Си++ возможно определение массива объектов класса. При этом конструктор и деструктор вызываются для каждого элемента массива и не должны иметь параметров. При выполнении оператора delete кроме указателя на массив объектов необходимо также указывать его размерность.


//------------------------------------------------------bk73-01.cpp


&#35include &#60io stream.h&#62
&#35include &#60alloc.h&#62
&#35include &#60string.h&#62



Начало  Назад  Вперед



Книжный магазин