Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#12

Re: Funktion überladen

  Alt 15. Aug 2006, 20:21
Zitat von Pseudemys Nelsoni:
Also soweit ich weiss, ging das in Delphi. Der Rückgabewert unterscheidet sich doch hm.... Wenn ich das Ergebnis einer Funktion einem string zuweise, müsste der compiler ja wissen, dass ich die meine mit String als Rückgabewert.
Da siehst du ein wenig was Falsch! Das ging auch unter Delphi nicht und sollte unter keiner anderen Sprache funktionieren. Stell dir einfach mal vor du hast eine Abstrakte Klasse AK und zwei Klassen A und B die von dieser Klasse Erben.
Jetzt überlädst du eine Methode, so grob in der Art:
Delphi-Quellcode:
function doFoo(s : String) : A;
begin
...
end;

function doFoo(s : String) : B;
begin
...
end;

procedure main;
var ak : AK;
begin
  ak := doFoo('Egal'); //<- Hier kann der Compiler nicht sagen welche Methode du möchtest
end;
Natürlich geht das noch in anderen Kombinationen, jedenfalls läufst du hier ganz schnell Gefahr einen Fehler zu übersehen und die falsche Methode aufzurufen, da sollte es jeder Compiler (jede Sprache) verbieten so etwas zuzulassen!

[ANMERKUNG NACH ROTEM KASTEN]
Ich möchte nochmal betonen, dass es keine Rechtfertigung gibt dies in einer Sprache zuzulassen, vollkommen unnötig!
[/ANMERKUNG NACH ROTEM KASTEN]
  Mit Zitat antworten Zitat