Перегрузка операторов в Delphi Win32 работает только для записей, а не для классов.
Он работает с Delphi 2006 и выше, но в Delphi 2007 были исправлены некоторые ошибки, с которыми им было легче работать (связанные с вызовом функций для результатов оператора).
Я дал сеанс по перегрузке оператора записи в CodeRage 3; Вы можете получить слайды и пример кода на 26326 CR3: обнуляемые типы с записями, методами и перегрузкой операторов и / или посмотреть воспроизведение видео на СКАЧАТЬ ВИДЕО РЕПЛЕЙ .
Это было резюме сессии:
Обнуляемые типы с записями, методы
и оператор перегружен одним из
вещи, где данные из баз данных и
Делфи нативные типы отличаются, это
поддержка NULL. Когда вы работаете с
базы данных много в Delphi, вы хотите
иметь тип данных, который поддерживает NULL. В
В прошлом вы должны были использовать варианты, но
уже нет! С введением
перегрузка оператора, вы можете сделать это
с типами записей тоже. Эта сессия
показывает, как.
Причина, по которой перегрузка оператора возможна только для записей в Delphi Win32 (т.е. не .NET), заключается в том, что записи являются типами значений, поэтому их управление памятью не является динамическим. Классы являются ссылочными типами, поэтому требуют динамического выделения памяти: им требуется концепция сборщика мусора, чтобы операторы могли с ними работать.
Поскольку в Delphi Win32 отсутствует концепция сборщика мусора, невозможно иметь операторы для классов в Delphi Win32.
Обратите внимание, что CodeRage 4 начинается на следующей неделе. У этого есть хороший ряд спикеров и сессий.