O co chodzi z tą referencją, i co to takiego jest ?
Patrząc na ekran, po kompilacji programu, zauwazamy ze funkcja, która chciała wyzerować dwa obiekty a i b wysłane do niej jako argumeny, zaskoczyła nas.
Oczywiście obiekt a jest nietknięty. To znamy, jednak obiekt b ma wartość 0, dlaczego?
Kilka słów o funkcji zer:
Widzimy,że to funkcja , która przyjmuje dwa argumenty, pierwszy z nich jest przesyłany – tak jak poprzednio – przez wartość, drugi natomiast jest przesyłany przez referencję. Zauważ znak &.
W main mamy dwie zmienne, które wysyłamy do funkcji zer. Inaczej mówiąc: wywołujemy funkcje zer z parametrami aktualnymi a,b.
Wewnątrz funkcji zer, na moment przed egzekucją, wypisujemy jeszcze wartość dwóch parametrów formalnych wart,ref.
Tu następuje jakaś operacja zmieniająca wartość zmiennych wart i ref.W naszym przypadku wpisanie im zer.
Na dowód, że tak się stało w istocie – wypisujemy ich wartość na ekran.
Kończymy pracę funkcji, będąc już w main wypisujemy na ekranie wartości zmiennych a i b. I tu cała niespodzianka.
a pozostało bez zmian, a b?
pozostało zmienione właśnie ze względu na referencję.
– dwie nazwy ref, b określały ten sam obiekt. W tym cała filozofia referencji w języku C++
#include
using std::cin;
using std::cout;
using std::endl;
void zer(int wart, int &ref) {
cout<<"\tW funkcji zer przed zerowaniem\n";
cout<<"\twart="<