Einsteiger braucht hilfe
-
hallo erst mal

bin noch ziemlich neu auf diesem gebiet
meine frage lautet: wieso funktioniert das programm wenn ich par2 mit 2.0 deklariere und ohne dekleration nicht?
danke schon mal#include <iostream>
using namespace std;double do_stuff(double par1, double par2 = 2.0);
int main(void) {
int var1;
double var2;// Aufruf von "int do_stuff(int)"
var1 = do_stuff(10);
cout << var1 << '\n';//Aufruf von "double do_stuff(10.2)"
var2 = do_stuff(10.2);
cout << var2 << '\n';//Aufruf von "int do_stuff(int, int)"
var1 = do_stuff (10, 11);
cout << var1 << '\n';//Aufruf von "double do_stuff(double, double)"
var2 = do_stuff(10.11, 11.22);
cout << var2 << '\n';
}//Funktionsdefinition
double do_stuff(double par1, double par2) {
return(par1 * par2);
}
-
Weil du die Funktion nicht mit "do_stuff(10)" aufrufen kannst, wenn sie 2 Parameter erwartet (du übergibst hier ja nur einen). Das dürfte einen Compiler-Error geben, richtig? Wenn du allerdings par2 zum Standardparameter machst, ist dieser Aufruf erlaubt. Das heißt quasi: wenn was für par2 übergeben wird, weise es zu, ansonsten weise 2.0 zu.
-
Ich nehme an Du solltest eigentlich
double do_stuff(double par1, double par2) { return(par1 * par2);//häßliche klammern } [cpp] und [cpp] double do_stuff(double par1) { return par1; }anbieten.
Was DU da machst, heißt "default parameter".
-
Danke für die schnelle antwort
eig ganz logisch, warum bin ich da nicht selber drauf gekommen
bis bald
-
Nächstes Mal könntest du ja vielleicht einen Titel wählen, der etwas aussagekräftiger ist als 'brauche Hilfe'.

-
_matze schrieb:
Nächstes Mal könntest du ja vielleicht einen Titel wählen, der etwas aussagekräftiger ist als 'brauche Hilfe'.

Das ist nur ein Punkt. Dazu kommen die fehlenden [cpp]-Tags und das übliche "funktioniert nicht".
@OP: Bitte den Thread "du brauchst Hilfe?" einmal lesen!