Уважаемые Эксперты. Начинаю изучать Delphi. Пожалуйста объясните мне попонятнее что такое конструктор и деструктор. Что значит "конструктор вызывается при создании переменной" Мы же ее объявляем в разделе Var. заранее благодарен.
Доброе время суток, Владислав! В разделе TYPE мы только описываем структуру такой сложной конструкции, как объект (класс - лучше говорить). Затем определяем переменную этого типа - говорят - создаем экземпляр объекта (в нынешней терминологии, просто, объект). Но она еще не заполнена необходимыми данными, в ней есть внутренние ссылки - их нужно проиницализировать. Это то и делает метод - констрактор (это почти обычная процедура), но она еще умеет и правильно размещать объект в оперативной памяти. constructor TMyClass.Create; А раз разместили - память объект занимает, то нужно и удалять его оттуда - это делает метод, который "имеет тип" дестрактор (destructor). Ответ отправлен: 28.05.2004, 16:21 Отправитель: Boriss Отвечает samum2000
Доброго времени суток, Владислав! Конструктор и деструктор по сути своей процедуры-члены класса, которые выполняют необходимые действия (выделение/освобождение памяти под объект, установка начальных значений полей и т.п.). Поэтому конструктор вызывается при создании объекта (под объектом подразумевают как раз переменную, типом которой является некоторый класс). А в разделе Var ты только указываешь, что переменная эта принадлежит классу такому-то. -------------------------- -=Experts helper: testmode=- Ответ отправлен: 30.05.2004, 19:14 Отправитель: samum2000 Отвечает vitya
Приветствую Вас, Владислав! Конструктор это метод класса/объекта, который должен вызываться при создании объекта для его инициализации. Деструктор, соответственно, при уничтожении объекта. Ответ отправлен: 29.05.2004, 13:18 Отправитель: vitya Отвечает Andy
Приветствую Вас, Владислав! Вот когда ты её там объявляешь, то вы зывается конструктор. А когда эта переменная уничтожается, то вызывается деструктор. P.S. И то и другое процедуры. Ответ отправлен: 28.05.2004, 15:52 Отправитель: Andy Отвечает CrackLab
Здравствуйте, Владислав! При работе с классами и объектами классов необходима инициализация (выделение памяти, задания начальных значений). Для решения проблемы инициализации и деинициализации существуют функция-конструктор и функция-деструктор. Конструктор обычно используется для задания начального значения переменных объекта, выделения памяти и т.д. Деструктор обычно используется для освобождеия памяти занимаемой объектом. функция конструктор объявляется в классе с помощью ключевого слова constructor, например constructor Create(x, y : integer); функция деструктор объявляется в классе с помощью ключевого слова destructor, например destructor Destroy(); В С++ конструктор объекта вызывается при объявлении объекта. В Delphi же, такого не происходит, и инициализацию (вызов конструктора) приходится производить самому. Например у нас есть такой
класс MyClass: type MyClass = class i,j,k : integer; end; Допустим что при работе с объектом класса MyClass нам всегда нужно задавать начальные значения i,j,k. Мы можем написать так: var MyObject : MyClass; begin MyObject := MyClass.Create; // Вызов родительского конструктора класса TObject для выделения памяти объекту MyObject.i := 5; MyObject.j := 10; MyObject.k := 15; А можем добавить в класс конструктор: type MyClass = class i,j,k : integer; constructor MyClass.Create(_i, _j, _k : integer); end; constructor MyClass.Create(_i, _j, _k : integer); begin i := _i; j := _j; k := _k; end; И проинициализировать наш объект так: var MyObject : MyClass; begin MyObject := MyClass.Create(5,10,15); Думаю смысл конструкторов понятен, хотя мой пример слабо отражает необходимость конструкторов. Но тем не менее
они необходимы всегда, как минимум для выделения памяти объекту. Ответ отправлен: 29.05.2004, 22:16 Отправитель: CrackLab Отвечает sir henry
Здравствуйте, Владислав! Конструктор - это процедура, которая вызывается при создании переменной типа объект (класс). Для переменной обычного типа (string, integer) конструктор, конечно, не нужен. Однако при создании переменной типа объект(класс) должны создаваться некоторые сопутствующие вещи, например инициализироваться некоторые свойства или, например, меняться разрешение экрана. Вот как раз для создания этих вещей и служит конструктор. Деструктор - уничтожитель, т.е. он делает все наоборот :). Примеры можно посмотреть в исходниках самого Дельфи, поэтому приводить я их не буду. Ищите контекстным поиском слово CONSTRUCTOR. Ответ отправлен: 31.05.2004, 04:04 Отправитель: sir henry
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.