@HumeSikkins: Überladen von Funktionen
-
Hallo,
ich habe in den Faqs (auf http://fara.cs.uni-potsdam.de/~kaufmann/index.php?page=GenCppFaqs&faq=Overload#Answ)) dieses Beispiel von dir gefunden:#include <iostream> class Base { public: void Func(int Param) { std::cout << "Func in Base: " << Param << std::endl; } }; class Derived : public Base { public: void Func(double Param) { std::cout << "Func in Derived:" << Param << std::endl; } }; int main() { Derived d; d.Func(10); d.Func(12.4); return 0; }
Eigentlich soll dieser Code ja NICHT den erwarteten Output "Func in Base: 10"
"Func in Derived: 12.4" liefern.
ABER: bei mir (MSVC 6.0 Enterprise) tut er das !!! Warum?
-
weil der vc++ nicht standardkonform ist.
-
Falls es jemanden interessieren sollte: Der VC7 macht dies (mal richtig.
-
ABER: bei mir (MSVC 6.0 Enterprise) tut er das !!! Warum?
Hast du das Service Pack 5 installiert? Mein MSVC 6.0 Sp5 gibt völlig korrekt:
Func in Derived:10
Func in Derived:12.4aus.
-
bei mir ja auch - aber nach Deinen Tutorial soll er das ja gerade NICHT tun, weil das "using Base::Func" fehlt?!?!?
-
Du hast Dich wohl ein wenig verlesen:
Man könnte denken, die Ausgabe wäre:
"Func in Base: 10"
"Func in Derived: 12.4"Dies ist aber nicht der Fall.
-
Man könnte denken, die Ausgabe wäre:
"Func in Base: 10"
"Func in Derived: 12.4"
Dies ist aber nicht der Fall.*seufz* ich habe mich nicht verlesen: Bei mir ist es eben DOCH der Fall. Genau das, was da steht, kommt raus. Es soll aber laut Text NICHT rauskommen....
-
@<keinPlan>
Lies mein Posting noch einmal *ganz genau* und installier dir dann das Service Pack 5.
-
@HumeSikkins:
sorry, wenn ich nerve, aber...Ich zitiere aus: http://fara.cs.uni-potsdam.de/~kaufmann/index.php?page=GenCppFaqs&faq=Overload#Answ
Dort steht:
Man könnte denken, die Ausgabe wäre:
"Func in Base: 10"
"Func in Derived: 12.4"
Dies ist aber nicht der Fall. Vielmehr wird zweimal Func von Derived aufgerufen. Es hat also keine Überladung stattgefunden. Warum nicht?Bei mit hat aber die Überladung DOCH stattgefunden, d.h., es kommt genau das gleiche heraus wie bei dir - aber laut dem Text soll das doch gerade NICHT herauskommen *auf dem Schlauch steh*
-
geh zum psycho junge !!
-
Original erstellt von HumeSikkins:
**[quote] ABER: bei mir (MSVC 6.0 Enterprise) tut er das !!! Warum?
****
Hast du das Service Pack 5 installiert? Mein MSVC 6.0 Sp5 gibt völlig korrekt:
aus.**[/QUOTE]Also: Servicepack 5 Installieren. (Noch mal als wiederholung, vllt. liest Du es ja jetzt
-
*Richtiges* Ergebnis:
Func in Derived:10
Func in Derived:12.4*Falsches* Ergebnis:
"Func in Base: 10"
"Func in Derived: 12.4"Ergebnis für MSVC 6.0 Sp5:
Func in Derived:10
Func in Derived:12.4Vergleiche: *Richtiges* Ergebnis mit Ergebnis für MSVC 6.0 Sp5.
Ergebnis: Beide sind gleich.
Fazit: Durch die Installation des Service Packs 5 sollte sich ein etwaiges Problem mit dem MSVC 6.0 beheben lassen.Naja, Inhaltlich steht das jetzt zum 87-Mal in diesem Thread.
Und es wird irgendwie nicht lustiger hier.