Programowanie w języku Delphi

Overload

  • 2009-05-10 11:45
  • 3 komentarze
  • 4275 odsłon
  • Oceń ten tekst jako pierwszy
overload - słowo kluczowe języka Delphi

Klauzulą overload możemy opatrzyć procedury i funkcje, a także metody. Dzięki temu kompilator nie będzie protestował, gdy zadeklarujemy kilka funkcji lub procedur o tej samej nazwie! Warunkiem jest jednak to, że przeładowywane metody (o tych samych nazwach) muszą różnić się listą parametrów (chodzi o to by kompilator mógł rozróżnić po typach parametrów z którymi wywoływana jest metoda, którą z przeładowanych procedur (lub funkcji) ma użyć). Nie jest więc dopuszczalna poniższa sytuacja:

function Mnozenie(X,Y : Integer) : Integer; overload;
function Mnozenie(Z,W : Integer) : Integer; overload;



Przykład prawidłowego użycia:

function Mnozenie(X, Y : Integer) : Integer; overload;
begin
  Result := X * Y;
end;
 
function Mnozenie(X, Y : Currency) : Currency; overload;
begin
   Result := X * Y;
end;


W programie umieściliśmy dwie funkcje o tej samej nazwie. Teraz, w zależności od kontekstu (czyli wartości parametrów), kompilator sam zadecyduje jaką funkcję wywołać:

Mnozenie(2, 2);
Mnozenie(2.2., 2.2); // tak też będzie dobrze


Metody również mogą zostać poddane procesowi przeciążania. Spójrz na poniższy przykład, w którym przeciążone zostały konstruktory (które nota bene również są specyficzną odmianą metod).

type
  TMyClass = class
  public
    constructor Create; overload;
    constructor Create(Value : String); overload;
end;


Zobacz też:

3 komentarze

Coldpeer 2007-01-23 20:04

Tak. Widze trudno było sprawdzić, nie?

tomalla 2007-01-09 19:14

A więc: Przy deklaracji owej procedury czy funkcji piszemy OVERLOAD. Ale przy nagłówku reszty też piszemy? ... Resztą mam na myśli ten fragment kodu, który jest "zawartością" owej procedury czy funkcji.  ;)

tomalla 2007-01-09 19:14

A więc: Przy deklaracji owej procedury czy funkcji piszemy OVERLOAD. Ale przy nagłówku reszty też piszemy? ... Resztą mam na myśli ten fragment kodu, który jest "zawartością" owej procedury czy funkcji.  ;)