Może na początek zacznijmy od tego, po co wymyślono przestrzenie nazw. Otóż w dużych projektach, gdzie jeden program pisało 20 osób, zdarzało się, że dwie osoby użyły tej samej nazwy w kodzie tego programu i już dochodziło do błędów. Przestrzenie nazw powstały, aby takie sytuacje się nie zdarzały.

Przestrzeń nazwy to taki jakby zbiornik z nazwami. Każdy programista pisał we własnej przestrzeni, więc nie zdarzały się powtórzenia, tzn. być może zdarzały się, ale były w innych przestrzeniach, więc kompilator je rozróżniał.

Przestrzeń "std"

Już spotkaliśmy się z przestrzeniami, chociaż nie byliśmy tego świadomi. Biblioteka standardowa C++ jest zdefiniowana w przestrzeni o nazwie "std". Zauważmy, że przed każdym cin i cout pisaliśmy std::

#include <iostream>


int main(int argc,char* argv[])
{
  std::cout<<
"Wyświetl napis!"
<<std::endl;
  return EXIT_SUCCESS;
}


"std" to oczywiście przestrzeń nazwy, a :: to operator zasięgu, używany mdzn. przy przestrzeniach nazw. "cout" jest już dobrze znanym poleceniem, ale teraz wiemy już, że jest umieszczone w przestrzeni nazw std. Wiele bibliotecznych(dołączanych z pliku) elementów języka C++ jest umieszczone w tej przestrzeni.

Użycie przestrzeni nazw

Pisanie std przed każdą nazwą jest dość uciążliwe, dlatego możemy sobie zdefiniować użycie przestrzeni nazw, spójrzmy na przykład:

#include <iostream>


using namespace std;
//definiujemy użycie przestrzeni nazw dla std


int main(int argc,char* argv[])
{
  cout<<
"Wyświetl napis!"
<<endl;
  return EXIT_SUCCESS;
}


using namespace to zdefiniowanie używania przestrzeni, od tej pory nie musimy uzywać operatora zasięgu(::) przed poleceniami w tej przestrzeni.

Możliwe jest także zdefiniowanie używania tylko jednego z poleceń danej przestrzeni, dla przykładu zdefiniujmy używanie tylko cout z przestrzeni std.

#include <iostream>


using std::cout;
//definiujemy używanie cout z std


int main(int argc,char* argv[])
{
  cout<<
"Wyświetl napis!"
<<std::endl;
  return EXIT_SUCCESS;
}


Pisanie we własnej przestrzeni

Możemy utworzyć swoją własną przestrzeń nazw, spójrzmy na przykład:

#include <iostream>


namespace MojaPrzestrzen
{
  void Funkcja()
  {
    std::cout<<
"Funkcja w przestrzeni ;-)\n"
;
  }
}

int main(int argc,char* argv[])
{
  MojaPrzestrzen::Funkcja();
  return EXIT_SUCCESS;
}


Definiowanie nowe przestrzeniu powinniśmy zacząć od wyrazu namespace, następnie nazwa przestrzeni i w klamrach ciało przestrzeni. Wszystko co napiszemy pomiędzy klamrami będzie w tej przestrzeni. Aby użyć czegoś z przestrzeni(w naszym przypadku funkcji) na zewnątrz tej przestrzeni(w naszym przypadku w funkcji main), musimy odwoływać się przez opearotr ::, co widzimy na przykładzie. Oczywiście możemy definiować uzycie(using namespace) naszej przestrzeni itd.

Wejść na stronę:     Ilość osób online:
Prawa autorskie © 2008 crayze. Wszelkie prawa zastrzeżone.
crayze7@gmail.com