Przestrzenie nazw C ++

Przestrzenie nazw C ++
Przestrzeń nazw to kontener dla identyfikatorów. W C ++, jeśli chcemy wymagać deklaracji, takich jak niektóre zmienne, funkcje i klasy w naszym programie, umieszczamy to w grupie. Ta grupa nazywa się przestrzeni nazw. Tak więc przestrzeń nazw to grupa deklaracji.

Identyczne cechy przestrzeni nazw

A. Przestrzeń nazw jest ogólnie słowem kluczowym i używamy przestrzeni nazw o dowolnej unikalnej nazwie w naszym programie.

B. Używamy przestrzeni nazw w naszym pliku źródłowym. Przestrzeń nazw może być również używana w pliku nagłówka zdefiniowanego przez użytkownika. Oznacza to, że tworzymy plik nagłówka i wewnątrz pliku nagłówka, możemy użyć przestrzeni nazw.

C. Przestrzeń nazw stawia nazwę swojego członka w odrębnej przestrzeni, aby nie sprzeczne z nazwami w innych przestrzeniach nazw lub globalnych przestrzeni nazwisk.

Tworzenie przestrzeni nazw w programie C ++

Przestrzeń nazw Myexample
// deklaracje

A. W przeciwieństwie do definicji klasy, definicja przestrzeni nazw nie kończy się półkolisem.

B. Przestrzeń nazw należy zadeklarować w zakresie globalnym lub zagnieżdżone w innej przestrzeni nazw (1).

C. Przestrzeń nazw ma kolejną ważną funkcję. Możemy użyć nazwy aliasowej dla naszej nazwy przestrzeni nazw. Można go używać jako:

przestrzeń nazwa mnie = myexample;

Tutaj ja jest aliasem nazwy przestrzeni nazw. Jeśli ogłosimy to raz, możemy użyć tej przestrzeni nazw jako MOEFMAPA.

Bezimienne przestrzenie nazw

Przestrzeń nazw mającą żadną nazwę może być również dozwolona w programie C ++.

Przestrzeń nazw

// deklaracje

Przykład programowania 1:

#włączać
za pomocą przestrzeni nazw Std; // za pomocą przestrzeni nazw;
Przestrzeń nazw Myexample
int x;
int fun1 ();
Przykład klasy

publiczność:
void fun2 ();
;

int myexample :: fun1 ()

Cout<<“ Hello fun1 :\n ” ;

void myexample :: example :: fun2 () /* :: Używana jest rozdzielczość zakresu /operator.*/

Cout<<“ Hello fun2 :\n ” ;

za pomocą przestrzeni nazw Myexample; // przestrzeń nazw używana jest tutaj.
int main ()

x = 6;
fun1 ();
Przykład ob; // Utwórz instancję przykładowej klasy
OB.fun2 ();

Wyjście:

Wyjaśnienie:

Tutaj oświadczyliśmy, że przestrzeń nazw nazywa się MyExample. W przestrzeni nazw ogłosiliśmy zmienną „x” i funkcję fun1 (). Przykład klasowy jest również zadeklarowany w przestrzeni nazw. Inna funkcja o nazwie fun2 () jest zadeklarowana w przykładzie klasy.

Jeśli przypisujemy pewne wartości w zmiennej „x” w naszej głównej funkcji, musimy napisać

Myexample :: x = 6;

Ponieważ zmienna x nie jest zadeklarowana w funkcji głównej. Jest członkiem przestrzeni nazw Myexample. Więc musimy napisać:

Przestrzeń nazw :: x;

:: jest nazywany Operator rozdzielczości zakresu. Musimy napisać przestrzeń nazw :: x = 6 wewnątrz głównej funkcji, aby uzyskać dostęp do zmiennej x.

Jeśli chcemy wywołać funkcję fun1 (), musimy ją zdefiniować. Musimy napisać:

int myexample :: fun1 ()

FUN1 () jest członkiem Myexample Acespace, musimy to zdefiniować. Musimy zdefiniować FUN1 () z jego przestrzenią nazw i operatorem rozdzielczości zakresu (: :).

Jeśli chcemy zadzwonić do FUN2 () w przykładzie klasy, musimy napisać:

void myexample :: przykład :: fun2 ();

Ponieważ funkcja fun2 () jest członkiem przestrzeni nazw, a w przykładzie klasy musimy to napisać:

za pomocą przestrzeni nazw Std;

Wewnątrz FUN1 () Używamy instrukcji Cout. Jest to predefiniowany obiekt, więc jego deklaracja istnieje w przestrzeni nazw o nazwie STD. Ta przestrzeń nazw jest już zdefiniowana w pliku o nazwie iostream. Musimy dołączyć ten plik do naszego programu.

Przykład programowania 2:

#włączać
za pomocą przestrzeni nazw Std;
Przestrzeń nazw MOExample

int x;
void fun1 ();
Przykład klasy

publiczny:
Nieważny przykład ()

Cout<<“ example is a function :\n ” ;

;

za pomocą przestrzeni nazw Myexample;
void myexample :: fun1 ()

Cout<<“ in fun1 ” ;

int main ()

x = 6;
Przykład ob;
OB.przykład() ;
fun1 ();

Wyjście:

Wyjaśnienie:

Definicję przestrzeni nazw można kontynuować i rozszerzyć na wiele plików (1).

plik 1.H
przestrzeń nazwa myexample int x, y;
void fun1 ();

plik2.H
przestrzeń nazwa myexample int u, v;
void fun2 ();

Załóżmy, że mamy dwa pliki nagłówka o nazwie File1.H i File2.H . W pliku1.H, używamy przestrzeni nazw o nazwie MyExample. Wewnątrz Myexample znajdują się dwie zmienne x i y, a funkcja o nazwie fun1 () jest zadeklarowana.

W pliku2.H, używamy innej przestrzeni nazw o tym samym imieniu o nazwie MyExample. Wewnątrz Myexample znajdują się dwie zmienne x i y, a funkcja o nazwie fun2 () jest zadeklarowana.

Jeśli dołączymy te dwa pliki w naszym programie, możemy mieć błędne przekonanie, że istnieją dwie różne przestrzeni nazw, które istnieją taka sama nazwa. Może wystąpić konflikt nazwy. W rzeczywistości w programie istnieje tylko jedna przestrzeń nazwiska. W tej samej przestrzeni nazw wszystkie zmienne x, y, u, v i fun1 (), fun2 () są dodatkami. Nie mogą istnieć dwie różne przestrzeni nazw.

Wniosek:

Omawiając szczegółowe informacje na temat przestrzeni nazw, doszliśmy do tego wniosku, że przestrzeń nazw zapewnia nam unikalną funkcję w naszym programie C ++, która dotyczy organizacji naszych elementów deklaracji, takich jak zmienne, funkcje, klasy w systematyczny sposób.

Źródło:

(1) Studytonight.com. N.P., Sieć. 12 kwietnia. 2022. https: // www.Studytonight.com/cpp/namespace-in-cpp.php