do ÂściÂągnięcia ^ pdf ^ ebook ^ pobieranie ^ download
Podstrony
- Strona startowa
- Foster, Alan Dean Damned 02 The False Mirror
- Annie.Proulx. .Kroniki.portowe
- 040.Woods_Sherryl_Burzliwe_Zycie_Patsy_Gresham
- Moning Karen Marie To Tame a Highland Warrior 12 17
- Charlene Leonard Angel's Breath
- Gold_Kristi_Nic_do_stracenia
- Morgan Diana SzaleśÂ„cza eskapada(1)
- 1017. Bennett Jules Kraina speśÂ‚nionych marześÂ„
- Frank Herbert The Dosadi Experiment
- Fairytale Shifter 4 Finding Snow Alexa Riley
- zanotowane.pl
- doc.pisz.pl
- pdf.pisz.pl
- listy-do-eda.opx.pl
[ Pobierz całość w formacie PDF ]
int. W takim wypadku możliwe jest jednak odstępstwo - referencja jest bowiem nadal typu int z
dodatkowym warunkiem nałożonym za pomocą modyfikatora const. Można zatem stwierdzić, że
referencja spełnia warunek zgodności typu i dodatkowo nakłada na siebie ograniczenie, że nie będzie
zmieniać tej wartości.
O ile takie rozwiązanie mimo, że mogłoby się wydawać, że typy nie są zgodne, działa zgodnie
z zamierzeniami, to już w poniższym przykładzie z oczywistych powodów, kompilator zaprotestuje:
const float waga=68.5;
float &wartosc = waga; // UWAGA - BLAD !!!
Zapytasz dlaczego? Ponieważ określiliśmy, że wartość zmiennej waga jest stała, to nie możemy
dopuścić, aby referencja mogła dokonać jakichkolwiek zmian. Jeśli chcemy mieć zmienną, której
wartość pozostaje stała przez cały czas wykonania programu, musimy również zadeklarować
referencję do stałej zmiennej. Zatem należałoby to zrobić tak:
const float waga=68.5;
const float &wartosc = waga;
Referencja a stała wartość
Jak inicjalizujemy wartość zwykłej zmiennej, wiesz doskonale. Spróbuj jednak zastosować
poniższą regułę do referencji, a okaże się, że to co było dozwolone dla zmiennej, nie jest dozwolone
dla referencji:
float &wartosc = 68.5;
Pomyślisz sobie - no dobrze, wiem dlaczego tak jest. Po lewej stronie mamy referencję do typu
float, a po prawej liczbę i kompilator nie wie, że typy są zgodne. Muszę Cię zmartwić - to nie to.
Kompilator w tym wypadku poradzi sobie z rozpoznaniem typów.
Autor: Marcin Nabiałek Kontakt e-mail: it-developer@wp.pl
Dokument jest chroniony prawem autorskim © 2004-2005
Ten dokument został pobrany ze strony http://it.hk.pl/
W czym zatem tkwi problem? Otóż referencja mimo, że jest typem, wskazuje zawsze na pewne
miejsce, w którym znajduje się inna zmienna. Tutaj natomiast nie mamy żadnej zmiennej, a referencja
sama w sobie nie jest w stanie przechować dodatkowej wartości, bo używa zawsze do tego zmiennej,
z którą jest powiązana.
Mimo to, również w tym wypadku istnieje rozwiązanie problemu. Wystarczy powiedzieć
kompilatorowi, że referencja będzie referencją do stałej i w ten sposób obiecujemy nigdy nie zmieniać
wartości referencji:
const float &wartosc = 68.5;
Zatem w ten oto sposób stworzyliśmy referencję, która nie jest jawnie powiązana z żadną
zmienną, a jedynie z pewną wartością liczbową. Oczywiście w takiej postaci byśmy takiego zapisu nie
użyli (zamiast referencji użylibyśmy zwykłą zmienną), ale jak się przekonasz, w przyszłości wiedza, że
można taką referencję utworzyć, może Ci się niekiedy przydać.
Podsumowanie
Przedstawiłem Ci w tej lekcji wszystkie najważniejsze zagadnienia dotyczące referencji, jakie są
niezbędne na tym etapie tego kursu. Są to zagadnienia bardzo ważne, a nawet kluczowe, aby
opanować bardziej skomplikowane mechanizmy.
Referencja jest bardzo często spotykaną konstrukcją w języku C++, dlatego też radzę Ci dobrze -
upewnij się, że wszystko udało Ci się zrozumieć. Jeśli nie - przeczytaj tę lekcję jeszcze raz i postaraj
się poćwiczyć poznane zagadnienia na własną rękę.
Autor: Marcin Nabiałek Kontakt e-mail: it-developer@wp.pl
Dokument jest chroniony prawem autorskim © 2004-2005
[ Pobierz całość w formacie PDF ]