Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Mal wieder AdvPT
Servus,
ich verstehe eine Lösung nicht ganz, vllt kann mir jemand helfen. Assignment 6 Aufgabe 1 c) und f)
http://www10.informatik.uni-erlangen.de/Teaching/Courses/WS2009/AdvProg/ex06.pdf
Musterlösung lautet:
c) 2 with 1.0
f) 5 with 10
Meines Erachtens müsste es aber doch
c) 4 with 1.0
f) 5 with 20
sein. Dafür hat man doch “virtual”! Eben dass Derived genutzt wird und nicht Base!?
Thx für Hilfe
pb ist aber ein Base* pointer und kein Derived
und warum wir dann bei f) 5 (von Derived!) aufgerufen? Ok, der Parameter kommt von Base… Warum die Funktion nicht auch?
Ok, ausfuehrlicher:
c) 2 with 1.0;
weil aus dem parameter “1.0” kein complex gemacht wird, sondern nur double. Die funktion f(double) gibts aber nur in Base
f) 5 with 10
Das passiert weil standard werte fuer parameter schon waehrend der compilezeit festgelegt werden. Diese werden dann anhand der Art des Pointers festgelegt (Base*). Waere das ein Derived* pb, haette der Compiler die “20” als default wert festgelegt. So kanns also tatsaechlich passieren, dass du funktionen der abgeleiteten klasse mit standard parametern der base klasse aufrufst!
ah, super thx…