-
В RTL в модулях Objects и Classes есть, соответственно, объекты и классы с одинаковыми именами, но несколько разной функциональностью. Например, TCollection, TStream, TStringList ...
Зачем такое дублирование?
-
Для совместимости с Делфи и старыми версиями фрипаскаля. In the Delphi approach to Object Oriented Programming, everything revolves around the concept of 'Classes'. A class can be seen as a pointer to an object, or a pointer to a record.
Remark: In earlier versions of Free Pascal it was necessary, in order to use classes, to put the objpas unit in the uses clause of a unit or program. This is no longer needed as of version 0.99.12. As of version 0.99.12 the system unit contains the basic definitions of TObject and TClass, as well as some auxiliary methods for using classes. The objpas unit still exists, and contains some redefinitions of basic types, so they coincide with Delphi types. The unit will be loaded automatically when the -S2 or -Sd options are specified.
-
Спасибо за ответ. (я тоже думал, что для совместимости)
А если я собираюсь использовать коллекции с нуля, а не тащить старые вещи в FreePascal, какие есть доводы в пользу класса TCollection из модуля Classes против объекта TCollection из модуля Objects?
-
Есть. Обджект меньше места в памяти займет, чем экземпляр класса, и меньше времени на создание/уничтожение. Посмотри сколько кода в конструкторе/декструкторе класса TObject. Так что если надо делать миллионов 10 экземпляров - то есть довод в пользу object.
Если в будующих версиях поддержка этого слова прекратится - придется написать прекомпилятор.
|