C++

Überladene Funktionen/Prozeduren

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Dieses Video zeigt, was es bedeutet, Funktionen zu überladen. Sehen Sie, worauf Sie dabei achten sollten, und erkennen Sie das Potenzial dahinter.

Transkript

Ich möchte Ihnen mal zeigen, wie man mit überladenen Funktionen arbeiten kann. Und dazu habe ich schon ein bisschen was vorbereitet, wir werden hier eine Funktion berechnen. Die liefert einen Integer und hat als Parameter einen Integer. Unser Hauptprogramm ruft das einfach auf und das können wir jetzt mal starten, da passiert nichts weiter Aufregendes. Da wird einfach der Wert, den man hier als Parameter übergibt, mit 4 multipliziert, also 12 mal 4 ist 48. Fertig aus. Jetzt hätte ich gern noch eine Funktion, die ähnlich ist mit dem gleichen Namen und das ist eigentlich das Besondere. In dem Moment habe ich da natürlich dann eine überladene Funktion. Das ist immer noch eindeutig, das muss auch immer eindeutig sein. Sonst weiß der Compiler ja nicht, wann er was verwenden soll. Die unterscheidet sich jetzt hier in der Anzahl der Parameter und das ist eigentlich das entscheidende, dass es irgendein Unterschied gibt in der Deklaration der Funktion, also hier in den Parametern, damit der Compiler weiß, welche Funktion er verwenden soll. So, Jetzt starte ich das mal. Jetzt kommt natürlich auch 48 raus, weil ich hier unten das nicht richtig aufgerufen hab. Ja, "34 * i1", das ist gut. Aber wir haben das Programm nicht abgeändert - natürlich ein dummer Fehler. So ist es natürlich schnell passiert, wenn man was kopiert. Das sieht aber besser aus: 408, 48. Da kommt jetzt auch was anderes raus, nämlich hier "12 * 34". So wunderbar, jetzt kann man auch was anderes machen, und das zeige ich Ihnen gleich mal. Und zwar, machen wir jetzt mal hier beides mal 'double'. Es ist egal, man könnte irgendein Parameter anders wählen, damit aber was sinnvolles rauskommt muss ich hier unten noch einen "static_cast <int" machen. Na...gerade vertippt. So, und Klammer auf. Da machen wir jetzt die Werteberechnung innen drin und sehr gut. So, jetzt ich kann es nochmal übersetzen, aber da passiert jetzt noch gar nichts weiter Aufregendes. Das ist ganz klar, doch, passiert schon. Warum? Ganz einfach. Weil jetzt durch die überladene Funktion der Aufruf nicht mehr eindeutig ist. Aber 'static_cast' ist natürlich ein ganz anderer. Das mit dem Aufruf müssen wir auch nochmal schauen. Da haben wir gleich mehrere Sachen wieder mal eingebaut. Das kann natürlich schnell passieren, schauen wir mal, so funktioniert es noch. Noch ist der Aufruf nämlich eindeutig. Ich hab' hier nämlich ein Integer und da einen Integer. Und jetzt rufe ich mal das Ganze in der Form auf: "cout << berechne(i1, 12.23) << endl;". Machen wir hier oben mal auch, damit wir noch was sehen können. Und ich starte es jetzt mal - das ist was ich Ihnen eigentlich zeigen wollte. Jetzt bekomme ich eine Fehlermeldung, weil es nicht eindeutig ist. Er weiß jetzt nicht mehr bei dieser Funktion da unten. Soll er jetzt das Umrechnen hier auf Integer, weil hier vorne steht ein Integer, oder auf Double, weil hinten ein Double ist. Also da passt jetzt gar keine Funktion dazu, da merkt man das. Eindeutig machen kann ich das Cast, es geht auch mit dem "static_cast <double". Und dann sollte das eigentlich wieder funktionieren. Jetzt schauen wir uns mal an, wie das aussieht. Jetzt habe ich hier 144, und hier 146. Es ist damit wieder eindeutig, Wenn man das hier oben auch noch sauber machen wollte, um das mal hier zu demonstrieren. Das wäre die andere Variante. Kommt natürlich jetzt das Gleiche raus, weil jetzt nimmt er einmal die Funktion für Integer, und einmal die Funktion für Double. Und auf die Art und Weise, kann man das hier ganz hübsch schreiben. Jetzt gibt's noch was trickreiches, ich kann jetzt auch noch hier, um die Sache nochmal etwas zu verkomplizieren, zum Beispiel einen default-Wert vorgeben. Das ändert jetzt hier erstmal nichts weiter, aber hier unten würde es was ändern. Wir machen mal in Default ein anderen Wert, sonst sehen sie nachher den Effekt nicht. Wenn ich nämlich den jetzt hier auf 'double caste', dann schauen wir mal was da rauskommt - da habe ich jetzt wieder einen Fehler Mal kurz gucken, was passiert ist. Gehen wir zurück, 'out' nicht deklariert. Da habe ich dann wieder einen dummen Tippfehler irgendwo eingebaut. Das ist natürlich immer wieder ärgerlich, aber das kann natürlich schnell passieren, hier oben, ganz unscheinbar und jetzt muss es aber durchrutschen. Jetzt ja, jetzt sehen wird das auch: 48, 36. Also, er nimmt hier die untere Routine, mit 'double, double', weil hier im Default auf 3 gesetzt ist, multipliziert er dann die 12 mit 3 und ansonsten nimmt er immer die passende Routine zu den Parametern. Das muss immer eindeutig sein. Wie gesagt, wenn man so gemischte Variablen jetzt übergibt, dann weiß er nicht mehr genau, wo es hinpasst. Es sei denn, man definiert dafür, auch nochmal eine spezielle Funktion. Also Sie haben jetzt gelernt, wie man Funktionen überladen kann. Immer der gleiche Name, man muss ein bisschen darauf achten, dass man da keine Fehler macht. Kann man sehr schnell durcheinanderkommen, wenn die Parameter in die falsche Routine rutschen. Sollte man es eigentlich nur tun, wenn es eindeutig ist, so wie hier mit Integer und Double, also wenn es Sinn macht - auch wenn ich hier irgendwas anderes multipliziere wie da oben. Dann hat man natürlich mehr Schwierigkeiten, irgendwelche Fehler im Programm zu finden.

C++

Machen Sie sich mit den einfachen Grundlagen zu C++ vertraut und lernen Sie anhand zahlreicher Übungs- und Codebeispiele die Klassenkonzepte, Prozeduren und Funktionen kennen.

9 Std. 3 min (143 Videos)
Derzeit sind keine Feedbacks vorhanden...

Video-Training auf DVD mit Bonusmagazin

+ Tutorial to go: Mit Videos für iPod, iPhone & Co.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!