menu

darmowe eBooki

Efekt Motyla

okładka

Książka, która wywróci Twoje życie do góry nogami

Sprawdź sam, czytając darmowy fragment eBooka Efekt Motyla.

Czy ta wiedza okazała się dla Ciebie przydatna? Chcesz wiedzieć więcej? Zobacz tutaj.

Google Adsense

migawka z forum

Dowcipy o programistach/informatykach

Witam, grunt to potrafić śmiać sie z samego siebie  ;DPrzychodzi informatyk do domu po pra...

Rysiek z "Klanu"

W związku z ogromnym poruszeniem we wszystkich mediach w naszym kraju, dotyczącym tak kultowej postaci jak Rysiek z &quo...

Propozycje zmian w serwisie Guide C++

Witam, ze względu na to że nie znalazłem podobnego tematu na forum, a mam kilka sugestii   ;) postanowiłem je ...

buttony

SDJ
vortal programistów
Vademecum sieci komputerowych
Soldiers'04 - fan klub Legii Warszawa
www.katalog.bajery.pl
katalog stron
katalog najlepszych stron
jestem w katalogu
Wszystko o C++
[zamknij]

Korzystamy z plików cookies i umożliwiamy zamieszczanie ich osobom trzecim. Pliki cookie pozwalają na poznanie twoich preferencji na podstawie zachowań w serwisie.
Uznajemy, że jeżeli kontynuujesz korzystanie z serwisu, wyrażasz na to zgodę.

jesteś w: Kurs C++ / Przestrzenie nazw
Szkoła Hakerów - Kurs Hackingu Bez Cenzury

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. 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.