Простір імен у C ++ | Встановіть 2 (розширення простору імен та безіменного простору імен)
Ми ввели простори імен нижче набору 1.
Простір імен у C ++ | Набір 1 (Вступ)
Визначення простору імен:
Визначення простору імен починається з простору імен ключових слів, а потім ім'ям простору імен:
простір імен імені_name
{
// Декларації коду, тобто змінна (int a;)
метод (void add ();)
Класи (клас класу {};)
}
Слід зазначити, що після заключної дужки немає крапки з комою (;).
Щоб викликати версію з підтримкою простору або функції або змінної підготовки імені простору імен наступним чином:
імена імені_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 } } Ви можете отримати доступ до членів вкладеного простору імен, використовуючи оператори роздільної здатності наступним чином:
// для доступу до членів імені_name2
Використання простору імен імені_name1 :: namespace_name2;
// для доступу до членів простору імен: name1
Використання простору імен імені_name1;
У наведених вище твердженнях, якщо ви використовуєте namesspace_name1, то це зробить елементи імені amespace_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 & lt ; & lt ; first :: func () & lt ; & lt ; & quot ; n & quot ;; cout & lt ; & lt ; second :: func () & lt ; & lt ; & quot ; n & quot ;; 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 & lt ; & lt ; first :: val1 & lt ; & lt ; & quot ; n & quot ;; cout & lt ; & lt ; first :: val2 & lt ; & lt ; & quot ; n & quot ;; 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 & lt ; & lt ; rel & lt ; & lt ; & quot ; n & quot ;; // prints 300 return 0 ; }
Вихід:
300