Programowanie w języku C/C++

Namespace

  • 2006-05-16 20:04
  • 4 komentarze
  • 6851 odsłon
  • Oceń ten tekst jako pierwszy
namespace oznacza przestrzeń nazw, w której mogą być zadeklarowane funkcje, struktury itd. Najlepiej zilustruje to przykład.

//...
namespace nazwa
{
  void funkcja_1()
  {
    //...
  }
}
//...


Aby odwołać się do składnika z danej przestrzeni nazw musimy użyć przed jego nazwą, nazwę przestrzeni, przykładowo (na podstawie powyższego):

//...
 
nazwa::funkcja_1();


Gdy często używamy jakichś funkcji, zmiennych z danej przestrzeni nazw możemy zrobić tak:

//....
namespace nazwa
{
  //...
}
 
using namespace nazwa; /* ta funkcja sprawia, że od tej pory nie musimy dopisywać do każdego elementu z przestrzeni nazwy przestrzeni oraz modyfikatora :: */
funkcja_1();
//...


Załóżmy, że mamy dwie identyczne (bądź podobne :-) ) przestrzenie nazw:

namespace First {
   void f() {}
   void g() {}        
}
 
namespace Second {
   void f() {}
   void g() {}         
}


Chcemy, aby pisząc instrukcję f() została wywołana funkcja z pierwszej przestrzeni nazw, a pisząc g() funkcja z drugiej przestrzeni. Należy w takim przypadku użyć deklaracji using, mianowicie:

// ...
  using First::f;    // brak słowa kluczowego namespace!
  using Second::g;
  f();    // First::f()
  g();   // Second::g() 
// ...


Po takich deklaracjach aby móc wywołać funkcję g() z przestrzeni nazw First, należy już to zrobić jawnie:

// ...
  First::g();
// ...

4 komentarze

Alighieri 2015-01-19 21:15

Toś wytłumaczył:D

Duninho 2008-11-09 16:27

Trochę krótkie i raczej kiepsko wyjaśnia, PO CO w ogóle to robić.

zoteek 2006-04-21 17:04

Tak na marginesie: po utworzeniu przestrzeni nazw nie jest potrzebny średnik :-)

pro3dor 2006-04-18 12:17

eee... fajne :D

nie znałem tego