Codestück verstehen/Initiierung von Variablen
-
hey ihr lieben
habe eine kurze frage zu folgendem codestück:
funktion (int i = 0) {};
wird hier einfach der variablen i der wert 0 zugewiesen,oder hats damit mehr auf sich? bzw was ist der sinn davon der variablen ihren wert innerhalb der klammer zuzuweisen in der doch normalerweise bloß die parameter stehen die von der funktion "erwartet" werden?
wird nun jeder variablen die ich der funktion übergebe der wert 0 zugewiesen?lg
rala
-
Du übergibst damit der Funktion einen Standardwert, welcher immer dann verwendet wird, wenn du keinen Parameter (beim Aufruf) angibst.
funktion(6); // i ist in der Funktion nun 6 funktion(); // i ist in der Funktion nun 0 (Standardwert)Grüße ... Heiko
-
Das ist ein default Parameter.
Sprich wenn du beim Funktionsaufruf nichts angibst, dann nimmt i den Wert 0 an.Du könntest den gleichen Effekt erreichen, wenn du Überladung benutzt (allerdings ist das natürlich ein wenig aufwändiger):
void funktion (int i) {} void funktion () { function ( 0 ); }Wenn du also einen Wert angibst, dann tut die 0 nichts zur Sache.
//EDIT
Ich habe das Beispiel mit der Überladung nicht ohne Grund gebracht. Es kann manchmal durchaus sein, dass du ein Objekt eben genau so default angeben möchtest, wo das mit der direkten Variante nicht geht. Da musst du dann halt den Umweg über die Überladung gehen. (Bei Benutzerdefinierten Klassen z.B).
-
vielen lieben dank
