Najlepszy samouczek nazw C ++ W 2024 r. W tym samouczku możesz dowiedzieć się Definiowanie przestrzeni nazw,za pomocą instrukcji,nazw Lamela,zagnieżdżone przestrzenie nazw,
Wyobraźmy sobie sytuację, gdy istnieje klasa o nazwie Zara dwóch studentów, w celu wyraźnego rozróżnienia między nimi, używamy nazwy zewnątrz, musiał użyć kilka dodatkowych informacji, takich jak adres domowy lub rodziców nazwa, itp
Taka sama sytuacja występuje również w zgłoszeniu C ++. Na przykład, można napisać funkcję o nazwie xyz (), w innej dostępnej bibliotece znajduje się również funkcja taką samą xyz (). Zatem, kompilator nie może określić, jakie używasz xyz funkcję ().
W związku z tym wprowadzenie pojęcianazw, mające nacelu rozwiązanie powyższych problemów, to mogą być stosowane jako dodatkowa informacja umożliwia rozróżnienie bibliotek tych samych funkcji nazwy, klasy, zmienne, i tak dalej. Używanie nazw, który jest zdefiniowany kontekst. W istocie, nazw jest definicja zakresu.
Zdefiniowanenazw słów kluczowych nazw, anastępnie nazwą przestrzeni nazw, co następuje:
namespace namespace_name { // 代码声明 }
W celu wywołania funkcji lub zmiennej w przestrzeni nazw, trzeba poprzedzić go z nazwą przestrzeni nazw, co następuje:
name::code; // code 可以是变量或函数
Zobaczmy, jak definicja przestrzeni nazw dla podmiotu oraz innych funkcji lub zmiennych:
#include <iostream> using namespace std; // 第一个命名空间 namespace first_space{ void func(){ cout << "Inside first_space" << endl; } } // 第二个命名空间 namespace second_space{ void func(){ cout << "Inside second_space" << endl; } } int main () { // 调用第一个命名空间中的函数 first_space::func(); // 调用第二个命名空间中的函数 second_space::func(); return 0; }
Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:
Inside first_space Inside second_space
Można użyć dyrektywyusing namespace tak, że gdy nie można używać nazw z przedrostkiem z nazwą przestrzeni nazw.Dyrektywa ta informuje kompilator, że kolejny kod korzystania z określonej nazwy przestrzeni nazw.
#include <iostream> using namespace std; // 第一个命名空间 namespace first_space{ void func(){ cout << "Inside first_space" << endl; } } // 第二个命名空间 namespace second_space{ void func(){ cout << "Inside second_space" << endl; } } using namespace first_space; int main () { // 调用第一个命名空间中的函数 func(); return 0; }
Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:
Inside first_space
wykorzystujące instrukcje mogą być również wykorzystywane w celu określenia konkretnych elementów przestrzeni nazw. Na przykład, jeśli masz zamiar używać tylko std sekcję nazw cout, można użyć następujące oświadczenie:
using std::cout;
Późniejsza kodu przy użyciu cout nie można dodać nazwę przestrzeni nazw jako przedrostek, ale przestrzeni nazwstd inne przedmioty jeszcze trzeba dodać nazwę przestrzeni nazw jako przedrostek, co następuje:
#include <iostream> using std::cout; int main () { cout << "std::endl is used with std!" << std::endl; return 0; }
Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:
std::endl is used with std!
Imiękorzystając z instrukcji wprowadzonych postępuj według normalnych zasad zakresie.Nazwy zużyciemdyrektywy początkowo widoczne aż do końca zakresu. W tym przypadku, ta sama nazwa poza zakresem definicji jednostek jest ukryta.
Nazw można definiować na różne części, a więc nazw składa się z kilku części oddzielnie określonym składzie. Różne elementy przestrzeni nazw mogą być rozłożone na wielu plikach.
Dlatego też, jeśli część nazw potrzeby poprosić o nazwę zdefiniowaną w innym pliku, trzeba jeszcze zadeklarować nazwę. Następująca definicja przestrzeni nazw można zdefiniować nową przestrzeń nazw, może to być dla istniejącej przestrzeni nazw, aby dodać nowe elementy:
namespace namespace_name { // 代码声明 }
Przestrzenie nazw mogą być zagnieżdżone, można zdefiniować inną przestrzeń nazw w obszarze nazw, co następuje:
namespace namespace_name1 { // 代码声明 namespace namespace_name2 { // 代码声明 } }
Można użyć :: operatorowi dostępu do zagnieżdżonych elementów przestrzeni nazw:
// 访问 namespace_name2 中的成员 using namespace namespace_name1::namespace_name2; // 访问 namespace:name1 中的成员 using namespace namespace_name1;
W powyższym oświadczeniu, jeśli używasz namespace_name1, a następnie w zakresie elementów namespace_name2 również dostępna w następujący sposób:
#include <iostream> using namespace std; // 第一个命名空间 namespace first_space{ void func(){ cout << "Inside first_space" << endl; } // 第二个命名空间 namespace second_space{ void func(){ cout << "Inside second_space" << endl; } } } using namespace first_space::second_space; int main () { // 调用第二个命名空间中的函数 func(); return 0; }
Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:
Inside second_space