Referencje 159
W trakcie godziny 5, „Funkcje”, powiedzieliśmy sobie, że funkcje mają dwa ograniczenia: argumenty są przekazywane przez wartość i że funkcja może zwrócić tylko jedną wartość.
Przekazywanie argumentów przez referencje pozwala na obejście obydwu tych ograniczeń. W C++, przekazywanie przez referencje, może być przeprowadzone na dwa sposoby, z wykorzystaniem wskaźników lub referencji. Każde rozwiązanie ma własną składnię jednak efekt końcowy jest taki sam. Wewnątrz funkcji nie jest tworzona kopia przekazywanego obiektu. Do funkcji przekazywany jest oryginalny obiekt.
Przekazywanie obiektów przez referencje pozwala funkcji na wykonywanie modyfikacji w tych obiektach.
Listing 11.4. tworzy funkcję zamieniającą dwie wartości. Jej parametry są przekazywane przez wartość.
Listing 11.4. Przekazywanie argumentów przez wartość
1: // Listing 11.4. - przekazywanie przez wartość
2:
3: #include <iostream.h>
4:
5: void Zamien(int x, int y) ;
6:
7: int main()
8: {
9: int x = 5, y = 10;
10:
11: cout « "Main. Przed zamiana, x: " « x « " y: " « y «
kł"\n" ;
12: Zamień(x, y);
13: cout « "Main. Po zamianie, x: •• « x « " y: " « y « "\n";
14: return 0;
15: }
16:
17: void Zamień(int x, int y)
18: {
19: int temp;
20:
21: cout « "Zamień. Przed zamiana, x: " « x « " y: " « y «
k*"\n";
22:
23: temp = x;
24: x = y;
25: y = temp;
26:
27: cout « "Zamień. Po zamianie, x: " « x « " y: " « y «
k*"\n" ;
W trakcie godziny 5, „Funkcje", powiedzieliśmy sobie, że funkcje mają dwa ograniczenia: argumenty są przekazywane przez wartość i że funkcja może zwrócić tylko jedną wartość.
Przekazywanie argumentów przez referencje pozwala na obejście obydwu tych ograniczeń. W C++, przekazywanie przez referencje, może być przeprowadzone na dwa sposoby, z wykorzystaniem wskaźników lub referencji. Każde rozwiązanie ma własną składnię jednak efekt końcowy jest taki sam. Wewnątrz funkcji nie jest tworzona kopia przekazywanego obiektu. Do funkcji przekazywany jest oryginalny obiekt.
Przekazywanie obiektów przez referencje pozwala funkcji na wykonywanie modyfikacji w tych obiektach.
Listing 11.4. tworzy funkcję zamieniającą dwie wartości. Jej parametry są przekazywane przez wartość.
Listing 11.4. Przekazywanie argumentów przez wartość
1: // Listing 11.4. - przekazywanie przez wartość
2:
3: #include <iostream.h>
4:
5: void Zamień(int x, int y) ;
6:
7: int main()
8: {
9: int x = 5, y = 10;
10:
cout « "Main. Przed zamiana, x: " « x « " y: " « y « >*"\n";
Zamień(x, y);
cout « "Main. Po zamianie, x: " « x « " y: " « y « "\n"; return 0;
11:
12:
13:
14:
15: )
16:
17: void Zamień(int x, int y)
18: <
19: int temp;
20:
21: cout « "Zamień. Przed zamiana, x: " « x « " y: " « y «
22:
23: temp = x;
24: x = y;
25: y = temp;
26:
27: cout « "Zamień. Po zamianie, x: " « x « " y: " « y «
28:
29: }