![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отличие class от object
Frozzen © (2004-11-05 16:59:00)Объясните пожайлусто без приколов чем отличие объявления class от object
Frozzen (2004-11-05 19:17:00) [1]Спасибо за толковый ответ PVOzerski
PVOzerski (2004-11-05 19:15:00) [2]Классы появились в Delphi, до этого в TP были только объекты. Классы, в отличие от объектов, подразумевают динамическое выделение памяти под каждый экземпляр, что происходит при вызове конструктора (синтаксис этого вызова очень похож на синтаксис вызова функции, в то время как у объектов конструктор - процедура). При этом именно у классов есть набор предопределенных в tObject методов, допускаются виртуальные конструкторы, published-свойства и связь с COM-интерфейсами. Кроме того, именно для классов возможно использование метаклассов для динамического выбора типа порождаемых экземпляров. В целом, Borland рекомендует использовать именно классы. Хотя с точки зрения оптимизации (точнее, удаления "мертвого" кода) объекты тоже имеют ряд преимуществ - см. проект KOL.
Гаврила (2004-11-05 17:59:00) [3]под Object память выделяется сразу.
Если переменная типа Object объявлена как локальная, она целиком помещается в стек, то есть не указатель ,а весь объект.
При передаче Object параметром в функцию если не указана директива var или const, также происходит полное копирование в стек содержимого объекта.
А что лучше - ну так однозначный ответ
> ИМХО, object оставили для обратной совместимости с ТР. :-)
jack128 (2004-11-05 17:43:00) [4]Frozzen (05.11.04 17:25) [6]
т.е. лучше пользовать object
это откуда ты такой вывод сделал???
Frozzen (2004-11-05 17:25:00) [5]т.е. лучше пользовать object
begin...end (2004-11-05 17:14:00) [6]Или имеется в виду различие между
TMyObject = class
и
TMyObject = object
?
ИМХО, object оставили для обратной совместимости с ТР. :-)
KSergey (2004-11-05 17:13:00) [7]Ой, я походу все ровно перепутал... наибарот, так сказать...
Pentium133 (2004-11-05 17:12:00) [8]
> KSergey © (05.11.04 17:07) [1]
Скорее наоборот!
begin...end (2004-11-05 17:10:00) [9]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 equivalentto
type TMyClass = class(TObject)
...
end;
The latter form is recommended for readability.
KSergey (2004-11-05 17:07:00) [10]Рискну, хотя не уверен. Ну да поправляльщики, как правило, быстро находятся. Что и к лучшему ;)
object- наследник TObject, что подразумевает включение многих методов уже. А так же особенностей поведения.
class- а нифига в нем нет, как я понимаю. С чистого листа ;) Если не вру - он даже память сам под себя выделять даже не умеет (MakeInstance в TObject). Да и вообще оставлен лишь для совместимости. Не рекомендуется для использования, хотя есть ребята, которые его активно юзают (KOL)