Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.47 MB
Время: 0.042 c
1-1099671777
nick123
2004-11-05 19:22
2004.11.21
Передача указатель


14-1099347199
quickblack
2004-11-02 01:13
2004.11.21
Загрузка на почту


14-1099658239
}|{yk
2004-11-05 15:37
2004.11.21
Суперзагадка дня


14-1097151015
Красная Майка
2004-10-07 16:10
2004.11.21
MMP - Липки 2004


1-1099438110
Змей
2004-11-03 02:28
2004.11.21
Richedit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский