Категория
Информатика
Тип
реферат
Страницы
3 стр.
Дата
19.06.2013
Формат файла
.doc — Microsoft Word
Архив
687462.zip — 0.34 kb
  • Readme_docus.me.txt — 125 Bytes
Оцените работу
Хорошо  или  Плохо


Текст работы

Динамические Объекты

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

var

Pline: ^Tline;

.......

New(Pline, Init):

.......

В этом примере размещение объектной переменной (на нее указывает PLINE) в куче сопровождается одновременным обращением к конструктору TLINE . INIT для инициализации объекта и связывания виртуальных методов с вновь созданной переменной: в процедуре New допускается в качестве второго параметра указывать обращение к конструктору .

Более того, процедуру New можно вызывать и как функцию - в этом случае она возвращает значение типа Pointer, указывающее на динамически распределенный объект:

PLine := New(TLine);

или

PLine := New(TLine, Init):

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

New(Pline, PLine^ .Init);

вызовет сообщение об ошибке .

При обращении к New с одновременным вызовом конструктора динамическая память резервируемая с помощью специального программного кода, входящего в любой конструктор и вызываемого до начала работы исполняемой части конструктора (до begin) . При этом динамическая память может оказаться исчерпанной . В этом случае стандартная функция обработки ошибок администратора кучи выдает значение 0, что вызывает аварийное завершение программы с кодом ошибки 203 . Если используется нестандартная функция обработки ошибок и эта функция возвращает 1, конструктор пропускает операторы после begin и возвращает Nil . Таким образом гарантируется, что исполняемые операторы конструктора будут работать только при условии нормального распределения динамической памяти . Однако в теле конструктора может быть создан новый динамический объект, в нем - свой и т .д . Турбо Паскаль



Ваше мнение



CAPTCHA