Alt hvad du behøver at vide om navneområde i C ++



Denne artikel vil give dig en detaljeret og omfattende viden om Namespace i C ++. Det er forskellige typer og anvendelser i ethvert program.

Navneområde i C ++ bruges til at organisere kode i logiske grupper og til at forhindre navnekollisioner, der kan forekomme, især når din kodebase indeholder flere biblioteker. I denne artikel vil følgende punkter blive dækket:

streng til java-udnyttelsesdato

Behovet for navneområde

Overvej en situation, vi skriver en kode, der har en funktion kaldet abc (), og der er et andet foruddefineret bibliotek til rådighed, som også har samme funktion abc (). Nu på tidspunktet for kompilering har compileren ingen anelse om, hvilken version af abc () -funktionen vi henviser til inden for vores kode.





Navneområde i c ++

For at overvinde denne vanskelighed er navneområdet designet og bruges som yderligere information til at differentiere lignende funktioner, variabler, klasser osv. Med det samme navn, der er tilgængeligt i forskellige biblioteker. Ved hjælp af navneområdet kan vi definere den sammenhæng, hvori navne defineres. I det væsentlige definerer et navneområde et omfang.



Alle C ++ - standardbibliotektyper og -funktioner er deklareret i std-navneområdet eller navneområder, der er indlejret i std, så det bruges i vid udstrækning i de fleste af programmerne.

Definition af et navneområde

For at definere navneområdet starter vi med nøgleordets navneområde efterfulgt af navneområdet navn som følger:

namespace namespace_name {int a, b // kodedeklarationer hvor // a og b er deklareret i // namespace_name's scope}

Punkter, du skal huske, når du definerer et navneområde

  • Navneområdedeklarationer vises kun i globalt omfang.
  • Navneområdedeklarationer har ikke adgangsspecifikatorer.
  • Navneområdedeklarationer kan indlejres i et andet navneområde.
  • Ingen grund til at give semikolon efter den afsluttende afstivning af definitionen af ​​navneområdet.
  • Definition af navneområde kan opdeles over flere enheder.
#include ved hjælp af namespace std namespace 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 }

Produktion:



I ovenstående eksempel til at definere func () -funktionen to forskellige tidspunkter bruger vi namespace-konceptet. Vi definerer den første funktion under navneområdet first_function oganden funktion under navneområdet second_function. For at kalde disse funktioner bruger vi omfangsopløsningsoperator på følgende måde - first_function :: func () og second_function :: func ().

Brug af Navneområde i C ++

Der er tre måder at bruge et navneområde i programmet på,

  1. Brugerdirektivet
  2. Brugserklæringen
  3. Scope Resolution Operator (: :)

Brugerdirektivet

Vi kan undgå at forudbestille navneområder med ved brug af navneområdet direktiv. ved brug af nøgleord giver os mulighed for at importere et helt navneområde til dit program med et globalt omfang. Det kan bruges til at importere et navneområde til et andet navneområde eller ethvert program i henhold til vores krav.

trim () i java

Overvej en headerfil Namespace_first.h:

navneområde Første {int en klasse First_class {int i}}

Omfatter ovenstående headerfil i namespace i filen Namespace_second.h: inkluderer 'Namespace_first.h'

namespace Second {ved hjælp af namespace First First_class obj int y}

Vi importerer namespace_First til namespace_Second, derfor vil klasse First_class nu være tilgængelig i namespace_Second. Derfor kan vi skrive følgende program i en separat fil, lad os sige new_file.cpp.

#include 'Namespace_second.h' ugyldig test () {ved hjælp af namespace Second // opretter objekt af klasse First_class First_class obj2}

Derfor , bruger direktivet det meget nemmere at bruge et navneområde i C ++, hvor du vil.

Brugserklæringen

I brugserklæringen importerer vi et specifikt navn ad gangen, som kun er tilgængeligt inden for det nuværende omfang, og det kaldes ved hjælp af omfangsopløsning. BEMÆRK: Navnet importeret med brugserklæringen kan tilsidesætte det navn, der importeres ved hjælp af direktivet. Vi kan se dette i eksemplet nedenfor.

Lad os overveje en headerfil New_File.h:

navneområde Først {void A () {cout<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }

Lad os nu oprette en ny programfil med navnet New_file_2.cpp med nedenstående kode:

#include 'New_file.h' ugyldigt B () {ved hjælp af navneområde Først // ved hjælp af direktiv ved brug af Andet :: A // ved hjælp af erklæring Først :: A () // klasse A () i Første navneområde A () // kald A () af andet navneområde}

Omfangsopløsningsoperator (: :)

Vi kan eksplicit angive ethvert navn, der er erklæret i et navneområde ved hjælp af navnefeltets navn og omfangsopløsningen ' :: ' operatør med identifikatoren.

navneområde New_space {class X {static int i public: void func ()} // class name declaration class Y} // Initialisering af statisk class-variabel 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 }

Diskontinuerligt navneområde i C ++

Som vi kender kan et navneområde i C ++ defineres i flere dele, således at det består af summen af ​​dets separat definerede dele. Så hvis en del af navneområdet kræver et navn defineret i en anden fil, skal dette navn stadig erklæres i dets omfang. Skrivning af følgende navneområde på følgende måde definerer enten et nyt navneområde eller tilføjer nye elementer til et eksisterende:

navneområde namespace_name {// code body}

Indlejret navneområde i C ++

Navneområder kan nemt indlejres, og vi kan definere et navneområde i et andet navneområde som følger:

Java-kode for at afslutte programmet
namespace namespace_name1 {// code body of namespace_name1 namespace namespace_name2 {// code body nestet namamespace_name2}}

Med dette kommer vi til en ende på Namespace i C ++ - artiklen. Jeg håber, du fik en idé om, hvad der præcist er et navneområde i C ++, og hvad er de forskellige måder at definere det på. Hvis du ønsker at lære mere, skal du tjekke af Edureka, et betroet online læringsfirma. Edurekas Java J2EE- og SOA-uddannelses- og certificeringskursus er designet til at træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Spring.

Har du et spørgsmål til os? Nævn det i kommentarsektionen på denne blog, og vi vender tilbage til dig hurtigst muligt.