Всичко, което трябва да знаете за пространството от имена в C ++



Тази статия ще ви предостави подробни и изчерпателни познания за пространството от имена в C ++. Това са различни видове и приложения във всяка програма.

Пространството от имена в C ++ се използва за организиране на код в логически групи и за предотвратяване на сблъсъци на имена, които могат да възникнат, особено когато вашата кодова база включва множество библиотеки. В тази статия ще бъдат обхванати следните указатели:

Необходимостта от пространство за имена

Помислете за ситуация, ние пишем някакъв код, който има функция, наречена abc () и има друга предварително дефинирана библиотека, която също има същата функция abc (). По време на компилацията компилаторът няма представа коя версия на функцията abc () имаме предвид в нашия код.





Пространство от имена в c ++

За да се преодолее тази трудност, пространството от имена е проектирано и се използва като допълнителна информация за разграничаване на подобни функции, променливи, класове и т.н. със същото име, налично в различни библиотеки. Използвайки пространство от имена, можем да дефинираме контекста, в който са дефинирани имената. По същество пространството от имена определя обхвата.



Всички C ++ стандартни типове библиотеки и функции са декларирани в std пространството от имена или пространствата от имена, вложени в std, поради което той се използва широко в повечето програми.

Определяне на пространство от имена

За да дефинираме пространството от имена, започваме с ключовата дума, следвана от името на пространството от имена, както следва:

пространство на имена пространство на име {int a, b // декларации на кода, където // а и b са декларирани в // обхват на име на пространство на име}

Точки за запомняне, докато дефинирате пространство от имена

  • Декларациите за пространство на имена се появяват само в глобален обхват.
  • Декларациите за пространство на имена нямат спецификатори за достъп.
  • Декларациите за пространство на имена могат да бъдат вложени в друго пространство от имена.
  • Няма нужда да се дава точка и запетая след затварящата скоба на дефиницията на пространството от имена.
  • Определението на пространството от имена може да бъде разделено на няколко единици.
#include използвайки пространство от имена std пространство от имена first_function {void func () {cout<< 'Inside first_function' << endl } } namespace second_function { void func() { cout << 'Inside second_function' << endl } } int main () { // Calls function from first name space. first_function::func() // Calls function from second name space. second_function::func() return 0 }

Изход:



В горния пример, за да дефинираме функцията func () два различни пъти, използваме концепцията за пространство на имената. Дефинираме първата функция под пространство от имена first_function ивтора функция под пространство от имена second_function. За да извикаме тези функции, използваме оператор за разделителна способност по следния начин - first_function :: func () и second_function :: func ().

Използване на пространство от имена в C ++

Има три начина за използване на пространство от имена в програмата,

  1. Директивата за използване
  2. Декларацията за използване
  3. Оператор за разделителна способност на обхвата (: :)

Директивата за използване

Можем да избегнем добавянето на пространства от имена с използвайки директива за пространство от имена. използвайки keyword ни позволява да импортираме цяло пространство от имена във вашата програма с глобален обхват. Може да се използва за импортиране на пространство от имена в друго пространство от имена или друга програма според нашето изискване.

преобразуване на десетичен в двоичен питонов код

Помислете за заглавен файл Namespace_first.h:

пространство на имената Първо {int a class First_class {int i}}

Включително горния заглавен файл на пространството от имена във файла namespace_second.h: включете “namespace_first.h”

как да стартирате eclipse на windows
пространство на имената Второ {използване на пространство от имена Първо Първи_клас obj int y}

Ние импортираме namespace_First в namespace_Second, следователно класът First_class вече ще бъде достъпен в namespace_Second. Следователно можем да напишем следната програма в отделен файл, да кажем new_file.cpp.

#include 'namespace_second.h' void test () {using space names Second // създаване на обект от клас First_class First_class obj2}

Следователно , директивата using много улеснява използването на пространство от имена в C ++, където и да искате.

Декларацията за използване

В декларацията за използване импортираме по едно конкретно име, което е достъпно само в текущия обхват и се извиква с помощта на разделителна способност. ЗАБЕЛЕЖКА: Името, импортирано с using-декларация, може да замени името, импортирано с using директива. Това можем да видим в примера по-долу.

Нека разгледаме заглавен файл New_File.h:

пространство от имена Първо {void A () {cout<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }

Сега нека създадем нов програмен файл с име New_file_2.cpp с код по-долу:

#include 'New_file.h' void B () {използване на пространство от имена Първо // използване на директива с използване на Second :: A // използване на декларация First :: A () // клас A () на First namespace A () // извиква A () на Второ пространство от имена}

Оператор за разделителна способност на обхвата (: :)

Можем изрично да посочим всяко име, декларирано в пространство от имена, като използваме името на пространството от имена и разделителната способност “ :: ' оператор с идентификатора.

пространство на имената New_space {клас X {static int i public: void func ()} // декларация за име на клас class}} // Инициализиране на статична променлива на клас int New_space :: X :: i = 23 class New_space :: Y {int a public: int getdata () {cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }

Непрекъснато пространство от имена в C ++

Както знаем, пространството от имена в C ++ може да бъде дефинирано в няколко части, така че то се състои от сумата от отделно дефинираните му части. Така че, ако една част от пространството от имена изисква име, дефинирано в друг файл, това име все още трябва да бъде декларирано в неговия обхват. Писането на следното пространство от имена по следния начин или дефинира ново пространство от имена, или добавя нови елементи към съществуващо:

пространство от имена име_на_пространство {// тяло на кода}

Вложено пространство от имена в C ++

Пространствата от имена могат да бъдат вложени лесно и можем да дефинираме едно пространство от имена в друго пространство от имена, както следва:

пространство от имена пространство на име1 {// кодово тяло на пространство на имена1 пространство на имена пространство на име2 {// тяло на код вложено име на пространство на име2}}

С това стигаме до края на пространството от имена в статията на C ++. Надявам се да имате представа какво точно е пространство от имена в C ++ и какви са различните начини за неговото дефиниране. Ако искате да научите повече, разгледайте от Edureka, доверена компания за онлайн обучение. Курсът за обучение и сертифициране на Java J2EE и SOA на Edureka е предназначен да ви обучи както за основни, така и за разширени Java концепции, заедно с различни Java рамки като Hibernate & Spring.

Имате въпрос към нас? Моля, споменете го в раздела за коментари на този блог и ние ще се свържем с вас възможно най-скоро.