Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.21;
Скачать: CL | DM;

Вниз

Отличие 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
3-1098280573
Tchainik_Delphi
2004-10-20 17:56
2004.11.21
Добавление данных с помощью TIBDataSet.


1-1099661604
GIL
2004-11-05 16:33
2004.11.21
как узнать запущен ли процесс с определенным именем?


14-1098736585
Беспечный_Ангел
2004-10-26 00:36
2004.11.21
Ария vs Кипелов


1-1099642844
hh
2004-11-05 11:20
2004.11.21
Как объект привести в первоначальное состояние?


4-1097598256
Сергей К.
2004-10-12 20:24
2004.11.21
Помогите с Hook разобраться