Hvis man betragter det med simple funktioner: Call-by-value vil generelt sige at den kode der bliver eksekveret i den kaldte funktion, ikke kan ændre på de argumenter der bliver sendt med til funktionen
Og hvis det er call-by-reference er det omvendte gældende.
Eksempel: int my_func1(int a); void my_func2(int &a);
main() { int x1 = 5; int x2 = 7; // Call-by-value cout << x1; // Udskriv x1´s værdi som er 5 my_func1(x1); cout << x1; // Udskriv x1´s værdi som stadig er 5 // Call-by-reference cout << x2; // Udskriv x2´s værdi som er 7 my_func2(x2); cout << x2; // Udskriv x2´s værdi som nu er 49 getch(); return 0; }
int my_func1(int a) { a = a*a; return a; } void my_func2(int &a) // Bemærk her & tegnet som kendes for pointer, dvs her // arbejder funktionen ikke på en kopi af x2, men direkte // x2, da den får x2's adresse med som REFERENCE { a = a*a; return; }
Jeg bryder mig ikke helt om formuleringen "den kode der bliver eksekveret i den kaldte funktion, ikke kan ændre på de argumenter der bliver sendt med til funktionen". Det svarer egentling mere til betydningen af const-keyword'et.
Funktionen kan godt ændre på de argumenter der bliver sendt med, men det er kun kopier af de oprindelige objekter!
Jeg synes bare du skal give jpk pointene :o) Han kom med et rigtigt svar først, jeg gav sådan set det samme svar, bare med et lidt andet eksempel :o)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.