Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
ВнизОтличие class от object Найти похожие ветки
← →
Frozzen (2004-11-05 16:59) [0]Объясните пожайлусто без приколов чем отличие объявления class от object
← →
KSergey © (2004-11-05 17:07) [1]Рискну, хотя не уверен. Ну да поправляльщики, как правило, быстро находятся. Что и к лучшему ;)
object - наследник TObject, что подразумевает включение многих методов уже. А так же особенностей поведения.
class - а нифига в нем нет, как я понимаю. С чистого листа ;) Если не вру - он даже память сам под себя выделять даже не умеет (MakeInstance в TObject). Да и вообще оставлен лишь для совместимости. Не рекомендуется для использования, хотя есть ребята, которые его активно юзают (KOL)
← →
begin...end © (2004-11-05 17:10) [2]Help:
If the declaration of a class type doesn"t specify an ancestor, the class inherits directly from TObject. Thus
type TMyClass = class
...
end;
is equivalent to
type TMyClass = class(TObject)
...
end;
The latter form is recommended for readability.
← →
Pentium133 © (2004-11-05 17:12) [3]
> KSergey © (05.11.04 17:07) [1]
Скорее наоборот!
← →
KSergey © (2004-11-05 17:13) [4]Ой, я походу все ровно перепутал... наибарот, так сказать...
← →
begin...end © (2004-11-05 17:14) [5]Или имеется в виду различие между
TMyObject = class
и
TMyObject = object
?
ИМХО, object оставили для обратной совместимости с ТР. :-)
← →
Frozzen (2004-11-05 17:25) [6]т.е. лучше пользовать object
← →
jack128 © (2004-11-05 17:43) [7]Frozzen (05.11.04 17:25) [6]
т.е. лучше пользовать object
это откуда ты такой вывод сделал???
← →
Гаврила © (2004-11-05 17:59) [8]под Object память выделяется сразу.
Если переменная типа Object объявлена как локальная, она целиком помещается в стек, то есть не указатель ,а весь объект.
При передаче Object параметром в функцию если не указана директива var или const, также происходит полное копирование в стек содержимого объекта.
А что лучше - ну так однозначный ответ
> ИМХО, object оставили для обратной совместимости с ТР. :-)
← →
PVOzerski © (2004-11-05 19:15) [9]Классы появились в Delphi, до этого в TP были только объекты. Классы, в отличие от объектов, подразумевают динамическое выделение памяти под каждый экземпляр, что происходит при вызове конструктора (синтаксис этого вызова очень похож на синтаксис вызова функции, в то время как у объектов конструктор - процедура). При этом именно у классов есть набор предопределенных в tObject методов, допускаются виртуальные конструкторы, published-свойства и связь с COM-интерфейсами. Кроме того, именно для классов возможно использование метаклассов для динамического выбора типа порождаемых экземпляров. В целом, Borland рекомендует использовать именно классы. Хотя с точки зрения оптимизации (точнее, удаления "мертвого" кода) объекты тоже имеют ряд преимуществ - см. проект KOL.
← →
Frozzen (2004-11-05 19:17) [10]Спасибо за толковый ответ PVOzerski
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c