Przestrzenie nazw 21


Przestrzenie nazw

Witam ponownie. Dzisiaj powiemy sobie o przestrzeniach nazw. Przestrzenie nazw to pewien mechanizm, narzędzie lub po prostu standard Języka C/C++, które czasami może ułatwić nam życie. Powiedzmy, że razem ze znajomymi piszesz program. Rodzaj aplikacji pomijamy, bo jest w tej chwili bez znaczenia. Po dokładnym zaplanowaniu projektu rozdzielacie go na kilka części. Każdy dostaje odrębny moduł programu do napisania. Po napisaniu kompilujecie całość i składacie do kupy. Nagle okazuje się, że w niektórych plikach występują takie same nazwy zmiennych globalnych lub funkcji globalnych. Pojawia się dwuznaczność i kompilator [a raczej linker] wywali błąd. Co wtedy? Pamiętasz zapewne jak kiedyś wspomniałem o słówku kluczowym static? W takich przypadkach było ono bardzo przydatne i ratowało z opresji. Dla pewności może przypomnę jego działanie. Słowo static pozwalało na stosowanie takich samych nazw w różnych plikach projektu. Dzięki temu kompilator 'rozumiał' że dana zmienna, czy funkcja jest znana tylko w obrębie pliku, w którym się pojawiła. Teraz takie rozwiązanie zaczyna powoli ustępować miejsca przestrzeniom nazw. Zobacz teraz, w jaki sposób definiuje się przestrzeń nazw:

  1. 0x01 graphic
    0x01 graphic
    0x01 graphic
    namespace mojaPrzestrzen

  2. {

  3. int mojaZmienna = 128;

  4. void mojaFunkcja ()

  5. {

  6. cout << "moja przestrzen";

  7. }

  8. }

Widzisz jakie to proste! :) Zauważ podobieństwo do definicji klasy. No dobra, mamy już zdefiniowaną przestrzeń. Dostęp do elementów przestrzeni odbywa się na dwa sposoby. Po pierwsze możemy potraktować przestrzeń, jak klasę ze wszystkimi statycznymi składnikami. Zatem odwołanie się do zmiennej mojaZmienna z przestrzeni nazw mojaPrzestrzen wygląda tak:

  1. mojaPrzestrzen::mojaZmienna = 128;

Prawda, że proste! To samo tyczy się funkcji zdefiniowanych z przestrzeni. W naszym przypadku wywołanie funkcji mojaFunkcja wygląda następująco:

  1. mojaPrzestrzen::mojaFunkcja ();

Myślę, że wszystko jest jasne i zrozumiałe. Wiemy już, jak odnosić się do składników przestrzeni nazw. Jest to proste i wygodne. Ale, ale.. może być jeszcze prostsze! :) Jeżeli w programie mamy tylko jedną przestrzeń bądź z jednej korzystamy bardzo często możemy jeszcze bardziej uprościć sobie życie. Popatrze:

  1. namespace mojaPrzestrzen

  2. {

  3. int mojaZmienna = 128;

  4. void mojaFunkcja ()

  5. {

  6. cout << "moja przestrzen";

  7. }

  8. }

  9. using namespace mojaPrzestrzen; //określenie domyślnej przestrzenii

Od teraz nie musimy już za każdym razem pisać mojaPrzestrzen::mojaZmienna. Teraz wystarczy napisać mojaZmienna i kompilator będzie wiedział, o którą zmienną chodzi. Zatem słowa using namespace służą do określenia domyślnej przestrzenii nazw.



Wyszukiwarka

Podobne podstrony:
04 Przestrzen nazw domenid 5172 Nieznany (2)
Przestrzenie nazw i tablice
[lekcja 7] Przestrzeń nazw std Kurs C++ » Poziom 1
15.1. Konsola + przestrzenie nazw, Programowanie, Klasa III
04 Przestrzen nazw domenid 5172 Nieznany (2)
04 Przestrzeń nazw domen
Jak przestać narzekać w 21 dni BROSZURA INFORMACYJNA
Przestrzenie nazw i tablice
21 Montaż oświetlenia LED przestrzeni stóp
zagadnienia, punkt 21, XXI Przekształcenia liniowe przestrzeni skończenie wymiarowych
zmiany nazw odzieży na przestrzeni wieków
21 Montaż oświetlenia LED przestrzeni stóp
ROZPORZĄDZENIE MINISTRA GOSPODARKI PRZESTRZENNEJ I BUDOWNICTWA z dnia 21 lutego 1995 r
D19200394 Rozporządzenie Rady Ministrów z dnia 21 lipca 1920 r w przedmiocie poddania osób cywilnyc
01 Przestrzeganie przepisów bezpieczeństwa i higieny pracy 21
Przestępczość
Przestrzenie 3D
19 Mikroinżynieria przestrzenna procesy technologiczne,
W 21 Alkohole

więcej podobnych podstron