Hva gjør :: i C++?

Hva Gjor I C



C++ er et allsidig programmeringsspråk som tilbyr utviklere et bredt spekter av funksjonalitet. En av de mest brukte funksjonene i C++ er operatør for omfangsoppløsning , også kjent som dobbel kolon (::) . Til tross for at den er en viktig del av språket dobbel kolon operatør kan være forvirrende for mange utviklere, spesielt de som er nye til det.

I denne veiledningen skal vi se på dobbel kolon (::) operator i C++ og hvordan det fungerer i forskjellige scenarier.

Hva gjør :: i C++?

I C++ er omfangsoppløsning operatør (::) brukes til å hente variabelens navn tilstede på ulike omfangsnivåer. Omfanget i programmering refererer til konteksten der variabler og funksjoner kan nås.







Bruk av :: i forskjellige tilfeller i C++

I C++ er scope resolution operator (::) har ulike bruksområder avhengig av konteksten den brukes i. Følgende er noen bemerkelsesverdige bruksområder for denne operatøren:



1: Få tilgang til en variabel eller funksjon i et annet navneområde

EN navneområde brukes i C++ for å gruppere relaterte funksjoner, klasser og variabler for å unngå navnekonflikter. Når du definerer en variabel eller funksjon i en navneområde , er variabelen eller funksjonens navn bare synlig innenfor den navneområde .



I C++ kan du bruke scope resolution operator (::) sammen med navneområde navn og variabelen eller funksjonsnavnet for å få tilgang til en variabel eller funksjon definert i et annet navneområde. Dette lar deg få tilgang til variabelen eller funksjonen fra en navneområde annet enn den der den ble opprettet.





For å forstå saken ovenfor, se på følgende kode som et eksempel:

#include

bruker navneområde std ;

navneområde matematikk {

konst dobbelt PI = 3,14159 ;

dobbelt torget ( dobbelt x ) {

komme tilbake x * x ;

}

}

int hoved- ( ) {

cout << 'Verdien av PI er:' << matte :: PI << endl ;

cout << 'Kvadraten av 5 er: ' << matte :: torget ( 5 ) << endl ;

komme tilbake 0 ;

}

Koden ovenfor bruker matematisk navneområde for å få tilgang til «PI» konstant og 'torget' funksjon ved å bruke scope resolution operator '::' . Den skriver deretter ut verdiene til konsollen.



Produksjon

2: Få tilgang til Global Variable i Program

Når det samme navnet på lokale og globale variabler er til stede i programmet, kan den lokale variabelen skjule den globale. I slike situasjoner kan du bruke scope resolution operator (::) for å få tilgang til den globale variabelen. Denne operatøren lar oss eksplisitt referere til den globale variabelen basert på omfanget.

For eksempel, i koden gitt nedenfor, har vi referert til den globale variabelen 'en 'via scope resolution operator(::) , fra innsiden av en funksjon der en lokal variabel med samme navn er definert:

#include

bruker navneområde std ;

int en = femten ;

int hoved- ( )

{

int en = 35 ;

cout << 'Verdien av global variabel a er' << :: en << endl ;

cout << 'Verdien av lokal variabel a er' << en << endl ;

komme tilbake 0 ;

}

I koden ovenfor er variabelen a present utenfor hovedfunksjonen global variabel og variabelen a i hovedfunksjonen er lokal variabel med samme navn som den globale variabelen. I cout-setningen har vi brukt scope resolution-operatoren til å skrive ut den globale variabelen en .

Produksjon

3: Definer en funksjon utenfor klassen

I C++ kan du definere en klassefunksjon utenfor klassedefinisjonen, og det kan gjøres ved å bruke scope resolution operator (::) for å spesifisere hvilken klasse funksjonen tilhører. Dette er nødvendig fordi funksjonen er definert utenfor klasseomfanget.

Her er en eksempelkode som demonstrerer denne bruken av operatør for omfangsoppløsning :

#include

bruker navneområde std ;



klasse myClass {

offentlig :

tomrom min funksjon ( ) ;

} ;

tomrom klassen min :: min funksjon ( ) {

cout << 'myfunction() Kalt !' ;

}

int hoved- ( )

{

myClass classObj ;

klasseObj. min funksjon ( ) ;

komme tilbake 0 ;

}

I koden ovenfor, medlemsfunksjonen min funksjon() er definert utenfor klassen ved hjelp av scope resolution operator :: å spesifisere det min funksjon() tilhører klassen myClass.

Produksjon

4: Få tilgang til statiske medlemmer av klassen

I C++, når det er et statisk medlem og en lokal variabel med samme navn er til stede i klassen, vil scope resolution operator (::) kan brukes til å få tilgang til statiske medlemmer av en klasse. Dette gjør at programmet kan skille mellom den lokale variabelen og det statiske medlemmet.

Her er en eksempelkode som relaterer bruken av operatør for omfangsoppløsning for et slikt tilfelle:

#include

bruker navneområde std ;

klasse myClass {

offentlig :

statisk int myStatVar ;

} ;

int klassen min :: myStatVar = 5 ;

int hoved- ( ) {

int myStatVar = 10 ;

cout << 'Lokal variabel myStatVar: ' << myStatVar << endl ;

cout << 'Klassevariabel myStatVar: ' << klassen min :: myStatVar << endl ;

komme tilbake 0 ;

}

Programmet ovenfor definerer først en klasse klassen min med en statisk medlemsvariabel myStatVar . Den definerer deretter en lokal variabel med samme navn inne i hovedfunksjonen til programmet. For å få tilgang til klassevariabelen, scope resolution operator (::) brukes med klassenavnet klassen min . Programmet sender ut verdien av begge variablene til konsollen.

Produksjon

5: Bruk med flere arv

De scope resolution operator (::) brukes også til å indikere hvilken versjon av et medlem som skal brukes når en C++-klasse er avledet fra flere overordnede klasser som har medlemsvariabler eller funksjoner med samme navn. Vi kan skille mellom ulike versjoner av samme medlem ved å bruke operatør for omfangsoppløsning etterfulgt av overordnet klassenavn og medlemmets navn.

#include

bruker navneområde std ;

klasse Foreldre 1 {

offentlig :

tomrom skrive ut ( ) {

cout << 'Dette er klasse Parent1 utskriftsfunksjon.' << endl ;

}

} ;

klasse Foreldre 2 {
offentlig :
tomrom skrive ut ( ) {
cout << 'Dette er klasse Parent2 utskriftsfunksjon.' << endl ;
}
} ;
klasse myClass : offentlig forelder 1 , offentlig foreldre 2 {
privat :
int på en ;

offentlig :
klassen min ( int n ) {
på en = n ;
}
tomrom skrive ut ( ) {
Foreldre 1 :: skrive ut ( ) ; // kall opp Parent1s utskriftsfunksjon
Foreldre 2 :: skrive ut ( ) ; // kall opp Parent2s utskriftsfunksjon
cout << 'Verdien av num er: ' << på en << endl ; // skriv ut verdien av num
}
} ;
int hoved- ( ) {
myClass obj ( 42 ) ; // lag et objekt av MyClass med num initialisert til 42
obj. skrive ut ( ) ; // kall opp print()-funksjonen til objektet
komme tilbake 0 ;
}

Programmet ovenfor demonstrerer bruken av scope resolution operator (::) å skille mellom utskriftsfunksjonene til Foreldre 1 og Foreldre 2 når begge klassene er arvet av klassen min. Ved å kalle opp funksjonene med Foreldreklasse navn foran funksjonsnavnet, kan vi spesifisere hvilken versjon av funksjonen som skal brukes.

Produksjon

Bunnlinjen

De scope resolution operator (::) er en viktig komponent i C++ som brukes for å få tilgang til variabelnavn på tvers av forskjellige omfangsnivåer. Operatøren har forskjellige bruksområder, inkludert tilgang til en variabel eller funksjon i et annet navneområde, tilgang til en global variabel, definering av en funksjon utenfor klassen, tilgang til statiske medlemmer av en klasse og bruk av flere arv. Selv om det kan være forvirrende for nye utviklere, forstår det scope resolution operator (::) er avgjørende for god programmeringspraksis.