Какие виды перегрузок оператора Delphi поддерживает?

С предописаниями можно только объявить участников или параметры как указатель или ссылка на тот тип. Вы не можете использовать методы или другие вещи, которые требуют внутренностей упомянутого типа. Это сказало, что я нашел предописания, действительно ограничивающие при попытке ускорить время компиляции. Я предлагаю, чтобы Вы исследовали возможность предварительно скомпилированных заголовков немного больше, так как я нашел, что они действительно помогли со временем компиляции, хотя это было с использованием Visual C++ в Windows и не g ++.

16
задан jpfollenius 19 October 2009 в 09:43
поделиться

2 ответа

Actually, I found the answer to this myself, but kept the question as I can imagine people will search for this information regularly on stackoverflow;

The official description on operator overloaders can be found here : http://docwiki.embarcadero.com/RADStudio/en/Operator_Overloading_(Delphi)

Mainly, the ones I was looking for are named:

  • Equal, for '=' comparison : Equal(a: type; b: type) : Boolean;
  • NotEqual, for '<>' comparison : NotEqual(a: type; b: type): Boolean;
  • GreaterThan, for '>' comparison : GreaterThan(a: type; b: type) Boolean;
  • GreaterThanOrEqual, for '>=' comparison : GreaterThanOrEqual(a: type; b: type): resultType;
  • LessThan, for '<' comparison : LessThan(a: type; b: type): resultType;
  • LessThanOrEqual, for '<=' comparison : LessThanOrEqual(a: type; b: type): resultType;
17
ответ дан 30 November 2019 в 21:19
поделиться

Я только что выложил в Интернет свои заметки сеанса о типах, допускающих значение NULL, с перегрузкой операторов, который я дал во время нескольких конференций.

Теперь он содержит таблицу операторов , названия и то, что работает / не работает. WordPress изначально искажал эту таблицу, но мне удалось ее восстановить.

Вы также можете загрузить полный набор слайдов и демонстраций исходного кода .

Вкратце:

  • Документация (даже DocWiki) не является полным и обратите внимание на надежный
  • . Вы не можете перегрузить побитовый оператор not, так как BitwiseNot не поддерживается компилятором. Вместо этого вы должны перегрузить логический оператор «НЕ».
  • Перегрузите операторы попарно, где это применимо
  • Помните о существующих операторах
  • Будьте очень осторожны при реализации неявных операторов

Надеюсь, это поможет вам. Дайте мне знать, если вам понадобится дополнительная информация: я проделал довольно много производственной работы с перегрузкой операторов.

- jeroen

10
ответ дан 30 November 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: