![]() |
Überladen, Overload
Hallo,
ab welcher Delphi-Version kann man Methoden, Funktionen, ... überladen? Ich war bis ebend der meinung, daß man das schon seit BP7 konnte. Aber das scheibnt doch nicht so zu sein, da ich momentan mit Delphi 3 Prof herumprogrammiere und dort kann man nix überladen. Zum Stichwort overload findet man in der Hilfe nichts entsprechendes Mach ich was falsch? Ab welcher Delphi-Version kann man überladen? Gruß Dirk |
Re: Überladen, Overload
ab D5 funktionierts.
|
Re: Überladen, Overload
Danke für die schnelle Antwort.
Dann muss ich mir demnächst ne neuere Delphi-Version beschaffen. Schönen Abend noch Dirk |
Re: Überladen, Overload
Ab welcher Version kann ich dir nicht sagen. Ich denke mal es geht schon seit es die Objektorientierung gibt, denn ansonsten würde sie ja nicht halb soviel sinn machen. Allerdings hat man - wenn ich mich recht entsinne - früher nicht override verwendet sondern einfach nur virtual.
|
Re: Überladen, Overload
Überladen geht erst ab Delphi 4....
Hoppla, kaum ist man mal 'ne Viertelstunde weg, schon sind einem ein paar Leute zuvor gekommen... Übrigens overload hat nix mit override zu tun. Mal nen Blick in die Hilfe riskieren.. Ciao, teebee |
Re: Überladen, Overload
Ok, überladen geht ab Delphi 4 und funktioniert so richtig ab Delphi 5. In D4 gab es immer wieder Deklarationen die zwar gültige Sprachkonstrukte sind aber nicht vom Compiler aufgelösst werden konnten. Ebenfalls ein enormes Problem mit D4 overloads sind die Default Parameter. Unter bestimmten Umständen generierte der Compiler "selbstzerstörischen" Code.
Gruß hagen |
Re: Überladen, Overload
Seit welcher Version das Überladen von Prozeduren/Funktionen unter Delphi unterstützt wird, weiß ich nicht, aber wenn in der Hilfe dazu nichts zu finden ist, dann gibt es das in der entsprechenden Version noch nicht. Turbo Pascal 7.0 kannte auf jeden Fall noch kein "overload".
Ich wollte nur mal anmerken, daß das Überladen von Prozeduren/Funktionen zunächst nichts mit Objekten/Klassen zu tun hat, wie das folgende Beispiel zeigt:
Delphi-Quellcode:
Man vergleiche auch die interne Definition von "IntToStr". Überladen von Prozeduren/Funktionen bedeutet, daß es zu einem Bezeichner mehrere Implementationen gibt, die sich in der Parameterliste unterscheiden. Die beiden Aufrufe
function Maximum(a, b: Integer): Integer; overload;
begin if a > b then Result := a else Result := b; end; function Maximum(a, b: Single): Single; overload; begin if a > b then Result := a else Result := b; end;
Delphi-Quellcode:
aktivieren jeweils die passende Implementation, die aber schon durch den Compiler festgelegt wird.
Maximum(3, 8);
Maximum(3.2, 8.5); Die Tatsache, daß man bei Objekten/Klassen dynamische Methoden mit "dynamic", "virtual" und "override" erstellen kann, bedeutet ja, daß diese Methoden dynamisch gebunden werden. Das heißt, daß erst während des Programmablaufs entschieden wird, welche der Implementationen aktiviert wird. Das Ganze nennt man dann (dynamisches) Überschreiben von Methoden. Natürlich kann man eine virtuelle Methode in einer Klassendefinition als "overload" deklarieren, so daß in abgeleiteten Klassen eine überschriebene Methode sowie weitere überladene Methoden angelegt werden können. Ich hoffe, das hat ein weng geholfen ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz