2009-10-19 7 views
15

Me pregunto qué tipo de sobrecargas de operador son posibles (y con qué versión de Delphi)? Gracias a Hallvard's great write-up on operator overloading, no conozco:¿Qué tipos de sobrecargas de operador admite Delphi?

  • Añadir (izquierda, derecha: Tipo): Tipo (para el operador '+')
  • Restar (Izquierda, Derecha: Tipo): Tipo (para la ' -' operador)
  • Multiplicar (izquierda, derecha: Tipo): Tipo (para el operador '*')
  • Divide (izquierda, derecha: Tipo): Tipo (para el 'operador /')
  • implícito (aValue: Type): AnotherType y
  • Implícito (aValue: AnotherType): Tipo (para tareas implícitas: a: = b)
  • explícita (unValor: Tipo): AnotherType y
  • explícita (unValor: AnotherType): tipo (por assignmetns explícitas de 'moldes': a: = Tipo (b)

Sin embargo, lo que no sé son los nombres de los operadores '=', '< =', '<', '<>', '>' y '> ='. ¿Existen estos y de qué versión de Delphi puedo usarlos?

PD: Puedo seguir utilizando Delphi 2009 en este momento, por lo que tendría otro fuerte argumento de actualización-2010 si ofrece estos ;-)

Respuesta

16

En realidad, he encontrado la respuesta a esto por mí mismo, pero mantuvo la pregunta Me imagino que las personas buscarán esta información regularmente en stackoverflow;

La descripción oficial de overloaders operador se puede encontrar aquí: http://docwiki.embarcadero.com/RADStudio/en/Operator_Overloading_(Delphi)

Principalmente, los que yo estaba buscando se denominan:

  • Igualdad, por '=' comparación: Igual (a: Tipo ; b: tipo): booleano;
  • NotEqual, para '<>' comparación: NotEqual (a: tipo; b: tipo): Booleano;
  • GreaterThan, para la comparación '>': GreaterThan (a: type; b: type) Boolean;
  • GreaterThanOrEqual, para la comparación '> =': GreaterThanOrEqual (a: type; b: type): resultType;
  • LessThan, para '<' comparación: LessThan (a: tipo; b: tipo): resultType;
  • LessThanOrEqual, para '< =' comparación: LessThanOrEqual (a: tipo; b: tipo): resultType;
+0

página se ha movido [aquí] (http://docwiki.embarcadero.com/RADStudio/en/Operator_Overloading_ (Delphi)) – pritaeas

+0

@pritaeas: Gracias, he actualizado el enlace. – PatrickvL

9

Acabo de poner mi notes online de una sesión en tipos anulables con la sobrecarga del operador que di durante algunas conferencias.

Ahora contiene una tabla de los operadores, los nombres y lo que funciona/no funciona. WordPress inicialmente formó incorrectamente esa tabla, pero logré restaurarla.

También puede descargar full set of slides and source code demos.

En resumen:

  • La documentación (incluso el DocWiki) no es completa, fiable y tenga en cuenta
  • No se puede sobrecargar el operador bit a bit no, como BitwiseNot no está soportado por el compilador. Tienes que sobrecargar el operador lógico no en lugar.
  • operadores de sobrecarga por pares en su caso
  • estar al tanto de los operadores existentes
  • tener mucho cuidado en la aplicación de los operadores implícitos

la esperanza que esto le ayuda. Avíseme si necesita más información: he realizado bastante trabajo de producción con la sobrecarga del operador.

--jeroen

+0

Gracias, ahora que lo mencionas, he visto tus diapositivas antes. En general, una buena visión general. Es una pena que la comunidad Delphi tenga que documentar esto; Hubiera esperado una documentación aún más completa de CodeGear/Embarcadero en su lugar. – PatrickvL

+0

Necesito encontrar tiempo para poner muchas de mis cosas en línea primero, luego actualizar las Wiki correctas. –

+0

Un bitwise no es 'AnInteger XOR -1' – Johan

Cuestiones relacionadas