Recent

Author Topic: pregunta de sobrecarga del operador  (Read 2314 times)

zelda16bit

  • Full Member
  • ***
  • Posts: 118
pregunta de sobrecarga del operador
« on: June 11, 2021, 02:52:58 pm »
Hola.

Estoy en el apartado 8.9 del manual.
https://castle-engine.io/modern_pascal_introduction.html#_operator_overloading

Aqui se explica la sobrecarga del operador pero no entiendo los ejemplos,podria alguien explicarme con un ejemplo mas sencillo como usar esto y para que sirve.

lucamar

  • Hero Member
  • *****
  • Posts: 4219
Re: pregunta de sobrecarga del operador
« Reply #1 on: June 11, 2021, 03:04:44 pm »
Difícilmente puede ser más sencillo, pero vamos a intentarlo.

Supón que quieres que cada vez que escribas:
Code: Pascal  [Select][+][-]
  1. Cadena1 * Cadena2
el resultado sea ambas cadenas unidas con un salto de línea, como si hubieras hecho:
Code: Pascal  [Select][+][-]
  1. Cadena1 + LineEnding + Cadena2
Como el operador "*" no existe para cadenas, tienes que crear uno (o sea, "sobrecargar" el operador para que también funcione con cadenas):
Code: Pascal  [Select][+][-]
  1. operator* (const S1, S2: string): string;
  2. begin
  3.   Result := S1 + LineEnding + S2;
  4. end;

Y ya está, desde ese punto, cada vez que hagas:
Code: Pascal  [Select][+][-]
  1. UnaCadena := OtraCadena * OtraCadenaMas
UnaCadena acabará con el valor de las otras dos separadas por un fin de línea.

¿Fácil o no? ;)
Turbo Pascal 3 CP/M - Amstrad PCW 8256 (512 KB !!!) :P
Lazarus/FPC 2.0.8/3.0.4 & 2.0.12/3.2.0 - 32/64 bits on:
(K|L|X)Ubuntu 12..18, Windows XP, 7, 10 and various DOSes.

zelda16bit

  • Full Member
  • ***
  • Posts: 118
Re: pregunta de sobrecarga del operador
« Reply #2 on: June 11, 2021, 08:30:18 pm »
Pues si que es sencillo,pero eso es porque tu lo explicas mucho mejor que en ese manual.

Gracias. ;)

lucamar

  • Hero Member
  • *****
  • Posts: 4219
Re: pregunta de sobrecarga del operador
« Reply #3 on: June 11, 2021, 09:36:13 pm »
Pues si que es sencillo,pero eso es porque tu lo explicas mucho mejor que en ese manual.

Vaya, gracias :D
Turbo Pascal 3 CP/M - Amstrad PCW 8256 (512 KB !!!) :P
Lazarus/FPC 2.0.8/3.0.4 & 2.0.12/3.2.0 - 32/64 bits on:
(K|L|X)Ubuntu 12..18, Windows XP, 7, 10 and various DOSes.

 

TinyPortal © 2005-2018