Пространство на имена в C ++ | Комплект 1 (Въведение) Пространство на имена в C ++ | Комплект 2 (разширяване на пространството от имена и неназовано пространство от имена)
Различни начини за достъп до пространство от имена: В C ++ има два начина за достъп до променливи и функции на пространството от имена.
Определяне на пространство от имена:
Дефиницията на пространството на имена започва с пространството на ключовите думи, последвано от името на пространството от имена, както следва:
namespace namespace_name
{
// code declarations i.e. variable (int a;)
method (void add();)
classes ( class student{};)
}
Трябва да се отбележи, че след затварящата скоба няма запеталон (;).
За да извикате версията с активирана пространство на имена на функция или променлива, представете името на пространството от имена, както следва:
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; }
Имената, въведени в използване на директива, подчинявайте на правилата за нормален обхват. Името се вижда от точката на използването на директивата до края на обхвата, в която е намерена директивата. Субектите със същото име, дефинирани във външен обхват, са скрити.
Вложени пространства от имена:
преминаване по пощата
Пространствата с имена могат да бъдат вложени, където можете да определите едно пространство на имена вътре в друго име, както следва:
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; }
1. Нормален начин
CPP// C++ program to demonstrate accessing of variables // in normal way i.e. using '::' #include using namespace std; namespace geek { int rel = 300; } int main() { // variable ‘rel’ accessed // using scope resolution operator cout << geek::rel << "n"; // prints 300 return 0; }
Резултат:
300
2. Директива „Използване“
CPP// C++ program to demonstrate accessing of variables // in normal way i.e. using 'using' directive #include using namespace std; namespace geek { int rel = 300; } // use of ‘using’ directive using namespace geek; int main() { // variable ‘rel’ accessed // without using scope resolution variable cout << rel << "n"; //prints 300 return 0; }
Резултат:
300
Използване на пространството от имена в заглавни файлове Можем да създадем пространство от имена в един файл и съдържание на достъп, използвайки друга програма. Това става по следния начин.
- Трябва да създадем два файла. Единият, съдържащ пространството от имена и всички членове на данните и функции на членовете, които искаме да използваме по -късно.
- И другата програма може директно да се обади на първата програма, която да използва всички членове на данни и функции на членовете в нея.
Файл 1
CPP// file1.h namespace foo { int value() { return 5; } }
Файл 2
CPP// file2.cpp - Not to be executed online #include #include file1.h // Including file1 using namespace std; int main () { cout << foo::value(); return 0; }
Тук можем да видим, че пространството от имена е създадено във File1.h и стойността () на това пространство на имена се извиква във File2.cpp. Вложени пространства от имена В C ++ пространствата от имена също могат да бъдат вложени, т.е. едно пространство на имена вътре в друго. Разделителната способност на променливите на пространството от имена е йерархична.
CPP// C++ program to demonstrate nesting of namespaces #include using namespace std; // Nested namespace namespace out { int val = 5; namespace in { int val2 = val; } } // Driver code int main() { cout << out::in::val2; // prints 5 return 0; }
Резултат:
5
Пространство с имена псевдоним: В C ++ можете да използвате име на псевдоним за вашето име на имена за лесна употреба. Съществуващите пространства от имена могат да бъдат псевдоними с нови имена със следния синтаксис:
компютърни мрежи
namespace new_name = current_name;CPP
#include namespace name1 { namespace name2 { namespace name3 { int var = 42; } } } // Aliasing namespace alias = name1::name2::name3; int main() { std::cout << alias::var << 'n'; }
Резултат:
42
Ако харесвате geeksforgeeks и бихте искали да допринесете, можете също да напишете статия, използвайки write.geeksforgeeks.org Или изпратете статията си на прегледа[email protected]. Вижте вашата статия, появяваща се на основната страница на Geeksforgeeks и помогнете на други отрепки.