Пространството от имена в C ++ се използва за организиране на код в логически групи и за предотвратяване на сблъсъци на имена, които могат да възникнат, особено когато вашата кодова база включва множество библиотеки. В тази статия ще бъдат обхванати следните указатели:
- Необходимостта от пространство за имена
- Определяне на пространство от имена в C ++
- Точки за запомняне, докато дефинирате пространство от имена
- Използване на пространство от имена в C ++
- Непостоянни пространства от имена
- Вложени пространства от имена
Необходимостта от пространство за имена
Помислете за ситуация, ние пишем някакъв код, който има функция, наречена abc () и има друга предварително дефинирана библиотека, която също има същата функция abc (). По време на компилацията компилаторът няма представа коя версия на функцията abc () имаме предвид в нашия код.
За да се преодолее тази трудност, пространството от имена е проектирано и се използва като допълнителна информация за разграничаване на подобни функции, променливи, класове и т.н. със същото име, налично в различни библиотеки. Използвайки пространство от имена, можем да дефинираме контекста, в който са дефинирани имената. По същество пространството от имена определя обхвата.
Всички 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 ++
Има три начина за използване на пространство от имена в програмата,
- Директивата за използване
- Декларацията за използване
- Оператор за разделителна способност на обхвата (: :)
Директивата за използване
Можем да избегнем добавянето на пространства от имена с използвайки директива за пространство от имена. използвайки 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.
Имате въпрос към нас? Моля, споменете го в раздела за коментари на този блог и ние ще се свържем с вас възможно най-скоро.