Poznaj C++ w$ godziny0174

Poznaj C++ w$ godziny0174



Referencje 163

Linie 24-26 zamieniają wartości. Efekt zamiany wypisywany jest w linii 27. Wykonanie programu wraca do funkcji wywołującej (w tym wypadku main()). W linii 14 ponownie wypisywane są wartości zmiennych. Ponieważ były one przekazane do funkcji Zamień () przez referencje, dlatego również zostały zamienione wartościami.

Referencje dają możliwość wygodnego zarządzania normalnymi zmiennymi z jednoczesnym udostępnieniem narzędzi oferowanych przez wskaźniki.

Interpretacja nagłówków i prototypów funkcji

Listing 11.7. zawiera implementację zmiennej Zamień () z wykorzystaniem wskaźników, listing 11.8 z wykorzystaniem referencji. Implementacja oparta o referencje jest łatwiejsza, kod jest prostszy do czytania. Skąd jednak funkcja wywołująca wie, czy wartości są przekazywane przez referencje czy przez wartość? Jako klient (lub użytkownik) funkcji Zamień(), programista musi zagwarantować, że funkcja faktycznie zamieni wartości parametrów.

Tutaj pojawia się kolejna funkcja prototypów. Poprzez analizę zadeklarowanych parametrów w prototypie, który zazwyczaj znajduje się w specjalnym pliku nagłówkowym wraz z innymi prototypami, programista dowiaduje się, że parametry przekazywane do funkcji zamień są przekazywane przez referencje, co w przypadku funkcji Zamień () oznacza, że zostaną one prawidłowo zamienione.

Gdyby funkcja Zamień () była wewnętrzną metodą jakiejś klasy, to deklaracja tej klasy, również zawarta w pliku nagłówkowym, dawała by wszystkie niezbędne programiście informacje o tej funkcji.

W C++ klienci i użytkownicy klas i funkcji opierają się jedynie na plikach nagłówkowych i z nich czerpią wszystkie niezbędne do programowania informacje. Implementacja jest przed klientem (użytkownikiem) ukryta. Takie rozwiązanie pozwala programiście od początku skupić się jedynie na problemie bez zagłębiania się w szczegóły implementacyjne wykorzystywanych klas.

Zwracanie wielu wartości

Jak już mówiliśmy, każda funkcja, normalnie może zwrócić tylko jedną wartość. Co jednak zrobić, gdy musisz z funkcji zwrócić dwie wartości? Jedna z możliwości polega na przekazaniu do funkcji przez referencje dwóch roboczych obiektów. Funkcja może nadać im wymagane wartości. Przekazanie przez referencje gwarantuje, że przypisanie wartości nastąpi do obiektów oryginalnych, co umożliwi ich odczytanie. W efekcie uzyskujemy funkcję, która zwraca dwie wartości. Takie rozwiązanie pozwala na ominięcie normalnej wartości zwracanej przez funkcję, którą można w tym momencie wykorzystać np. do zwracania kodu błędu.

Problem zwracania wielu wartości można rozwiązać również z wykorzystaniem wskaźników. Listing 11.7. demonstruje funkcję zwracającą trzy wartości. Dwie z nich są zwracane przy pomocy argumentów wskaźnikowych, jedna normalnie, jako wartość funkcji.

Linie 24-26 zamieniają wartości. Efekt zamiany wypisywany jest w linii 27. Wykonanie programu wraca do funkcji wywołującej (w tym wypadku main()). W linii 14 ponownie wypisywane są wartości zmiennych. Ponieważ były one przekazane do funkcji Zamień () przez referencje, dlatego również zostały zamienione wartościami.

Referencje dają możliwość wygodnego zarządzania normalnymi zmiennymi z jednoczesnym udostępnieniem narzędzi oferowanych przez wskaźniki.

Interpretacja nagłówków i prototypów funkcji

Listing 11.7. zawiera implementację zmiennej Zamień() z wykorzystaniem wskaźników, listing 11.8 z wykorzystaniem referencji. Implementacja oparta o referencje jest łatwiejsza, kod jest prostszy do czytania. Skąd jednak funkcja wywołująca wie, czy wartości są przekazywane przez referencje czy przez wartość? Jako klient (lub użytkownik) funkcji Zamień(), programista musi zagwarantować, że funkcja faktycznie zamieni wartości parametrów.

Tutaj pojawia się kolejna funkcja prototypów. Poprzez analizę zadeklarowanych parametrów w prototypie, który zazwyczaj znajduje się w specjalnym pliku nagłówkowym wraz z innymi prototypami, programista dowiaduje się, że parametry przekazywane do funkcji zamień są przekazywane przez referencje, co w przypadku funkcji Zamień () oznacza, że zostaną one prawidłowo zamienione.

Gdyby funkcja Zamień () była wewnętrzną metodą jakiejś klasy, to deklaracja tej klasy, również zawarta w pliku nagłówkowym, dawała by wszystkie niezbędne programiście informacje o tej funkcji.

W C++ klienci i użytkownicy klas i funkcji opierają się jedynie na plikach nagłówkowych i z nich czerpią wszystkie niezbędne do programowania informacje. Implementacja jest przed klientem (użytkownikiem) ukryta. Takie rozwiązanie pozwala programiście od początku skupić się jedynie na problemie bez zagłębiania się w szczegóły implementacyjne wykorzystywanych klas.

Zwracanie wielu wartości

Jak już mówiliśmy, każda funkcja, normalnie może zwrócić tylko jedną wartość. Co jednak zrobić, gdy musisz z funkcji zwrócić dwie wartości? Jedna z możliwości polega na przekazaniu do funkcji przez referencje dwóch roboczych obiektów. Funkcja może nadać im wymagane wartości. Przekazanie przez referencje gwarantuje, że przypisanie wartości nastąpi do obiektów oryginalnych, co umożliwi ich odczytanie. W efekcie uzyskujemy funkcję, która zwraca dwie wartości. Takie rozwiązanie pozwala na ominięcie normalnej wartości zwracanej przez funkcję, którą można w tym momencie wykorzystać np. do zwracania kodu błędu.

Problem zwracania wielu wartości można rozwiązać również z wykorzystaniem wskaźników. Listing 11.7. demonstruje funkcję zwracającą trzy wartości. Dwie z nich są zwracane przy pomocy argumentów wskaźnikowych, jedna normalnie, jako wartość funkcji.


Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0168 Referencje 157 Referencje 157 23; cout « ” 24: cout « " 25: re
Poznaj C++ w$ godziny0166 Referencje 155 Referencje 155 ANALIZA: W linii 8 deklarujemy zmienną lokal
Poznaj C++ w$ godziny0170 Referencje 159Przekazywanie argumentów funkcji przez referencje W trakcie
Poznaj C++ w$ godziny0172 Referencje 161 Referencje 161 18 { 19 int temp; 20 21 cout «
Poznaj C++ w$ godziny0176 Referencje 165 Funkcja Potęgi () sprawdza poprawność parametru przekazaneg
met 4 26)    Która wartość statystyki F (z analizy wariancji) jest niemożliwa do uzys
Poznaj C++ w$ godziny0003 Tytuł oryginału: Teach Yourself C++ in 24 Hours, Second Edition Tłumaczeni
Poznaj C++ w$ godziny0007 VI Poznaj C++ w 24 godziny Przypisywanie wartości do zmiennych
Poznaj C++ w$ godziny0009 viii Poznaj C++ w 24 godziny 8    Zaawansowane sterowanie p
Poznaj C++ w$ godziny0010 Spis treści    ix 11    Referencje
Poznaj C++ w$ godziny0011 X Poznaj C++ w 24 godziny Ograniczenia przy przeciążaniu operatorów
Poznaj C++ w$ godziny0013 XII Poznaj C++ w 24 godziny 21    Preprocesor .............
Poznaj C++ w$ godziny0015 XIV Poznaj C++ w 24 godziny Część VIII Dodatki    407 A &nb
Poznaj C++ w$ godziny0016 Wstęp Ta książka ma pomóc Ci w poznaniu zasad programowania w C++. W ciągu
Poznaj C++ w$ godziny0017 XVI Poznaj C++ w 24 godziny ZAWSZE NIGDY Zawsze wykorzystuj tabele Zaws
Poznaj C++ w$ godziny0019 Godzina 1Zaczynamy Witamy w „Poznaj C++ w 24 godziny”. W ciągu pierwszej g
Poznaj C++ w$ godziny0024 8 Godzina 1 Książka „Poznaj C++ w 24 godziny” nie przyjmuje żadnych założe
Poznaj C++ w$ godziny0040 24 Godzina 3 Rysunek 3.1 Schemat pamięci MojaZmienna Nazwa Zmiennej RAM&nb
Poznaj C++ w$ godziny0042 26 Godzina 3 i unsigned dla liczb bez znaku. Liczby całkowite (short, long

więcej podobnych podstron