Въведохме пространства от имена по -долу набор 1.
Пространство на имена в C ++ | Комплект 1 (Въведение)
Определяне на пространство от имена:
Дефиницията на пространството на имена започва с пространството на ключовите думи, последвано от името на пространството от имена, както следва:
Пространство на имена Namespace_name
{
// Декларации на код, т.е. променлива (int a;)
метод (void add ();)
класове (ученик от клас {};)
}
Трябва да се отбележи, че след затварящата скоба няма запеталон (;).
За да извикате версията с активирана пространство на имена на функция или променлива, представете името на пространството от имена, както следва:
namesspace_name :: код; // Кодът може да бъде променлива функция или клас.
Използването на директива:
Можете също така да избегнете представяне на пространства от имена с директивата за използване на пространството от имена. Тази директива казва на компилатора, че следващият код използва имена в определеното пространство на имена.
Следователно пространството от имена се подразбира за следния код:
#include using namespace std; // first name space namespace first_space { void func() { cout << 'Inside first_space' << endl; } } // second name space namespace second_space { void func() { cout << 'Inside second_space' << endl; } } using namespace first_space; int main () { // This calls function from first name space. func(); return 0; }
Имената, въведени в използване на директива, подчинявайте на правилата за нормален обхват. Името се вижда от точката на използването на директивата до края на обхвата, в която е намерена директивата. Субектите със същото име, дефинирани във външен обхват, са скрити.
Вложени пространства от имена:
Пространствата с имена могат да бъдат вложени, където можете да определите едно пространство на имена вътре в друго име, както следва:
SYNTAX: namespace namespace_name1 { // code declarations namespace namespace_name2 { // code declarations } } Можете да получите достъп до членове на вложеното пространство на имена, като използвате операторите на резолюция, както следва:
// за достъп до членове на namespace_name2
Използване на пространство на имена Namesspace_name1 :: namespace_name2;
// за достъп до членове на пространството от имена: име1
Използване на пространство на имена Namesspace_name1;
В горните изявления, ако използвате namesspace_name1, той ще направи елементи на namespace_name2 налични в обхвата, както следва:
#include using namespace std; // first name space namespace first_space { void func() { cout << 'Inside first_space' << endl; } // second name space namespace second_space { void func() { cout << 'Inside second_space' << endl; } } } using namespace first_space::second_space; int main () { // This calls function from second name space. func(); return 0; }
Възможно е също така да се създадат повече от едно пространство на имена в глобалното пространство. Това може да стане по два начина.
-
Резултат:
-
Резултат:
- Те са пряко използваеми в една и съща програма и се използват за деклариране на уникални идентификатори.
- В неназовани пространства от имена на пространството от имена в не е споменато в декларацията на пространството на имена.
- Името на пространството от имена се генерира уникално от компилатора.
- Неназованите пространства от имена, които сте създали, ще бъдат достъпни само във файла, в който сте го създали.
- Неназованите пространства от имена са заместител на статичната декларация на променливите.
CPP
// A C++ program to show more than one namespaces // with different names. #include using namespace std; // first name space namespace first { int func() { return 5; } } // second name space namespace second { int func() { return 10; } } int main() { // member function of namespace // accessed using scope resolution operator cout << first::func() <<"n"; cout << second::func() <<"n"; return 0; }
5 10
Възможно е също така да се създадат два блока на пространството на имена, които имат същото име. Вторият блок на пространството на имена не е нищо друго, освен продължаване на първото пространство на имена. С по -прости думи можем да кажем, че и двете пространства от имена не са различни, но всъщност еднакви, които се определят на части.
CPP
// C++ program to demonstrate namespace extension #include using namespace std; // first name space namespace first { int val1 = 500; } // rest part of the first namespace namespace first { int val2 = 501; } int main() { cout << first::val1 <<"n"; cout << first::val2 <<"n"; return 0; }
500 501
Неназовани пространства от имена
// C++ program to demonstrate working of unnamed // namespaces #include using namespace std; // unnamed namespace declaration namespace { int rel = 300; } int main() { cout << rel << "n"; // prints 300 return 0; }
Резултат:
300
плащане с git