Hvad gør :: i C++?

Hvad Gor I C



C++ er et alsidigt programmeringssprog, der tilbyder udviklere en bred vifte af funktionalitet. En af de mest brugte funktioner i C++ er operatør for scope resolution , også kendt som dobbelt kolon (::) . På trods af at det er en vital del af sproget dobbelt tyktarm operatør kan være forvirrende for mange udviklere, især dem, der er nye til det.

I denne guide vil vi se på dobbelt kolon (::) operator i C++, og hvordan det fungerer i forskellige scenarier.

Hvad gør :: i C++?

I C++ er anvendelsesområde opløsning operatør (::) bruges til at hente variablens navne, der findes på forskellige omfangsniveauer. Omfanget i programmering refererer til den kontekst, hvor variabler og funktioner kan tilgås.







Brug af :: i forskellige tilfælde i C++

I C++ er scope resolution operator (::) har forskellige anvendelser afhængigt af den kontekst, den bruges i. Følgende er nogle bemærkelsesværdige anvendelser af denne operatør:



1: Få adgang til en variabel eller funktion i et andet navnerum

EN navneområde bruges i C++ til at gruppere relaterede funktioner, klasser og variabler for at undgå navnekonflikter. Når du definerer en variabel eller funktion inden for en navneområde , variablen eller funktionens navn er kun synligt i det navneområde .



I C++ kan du bruge scope resolution operator (::) sammen med navneområde navn og variabel- eller funktionsnavnet for at få adgang til en variabel eller funktion defineret i et andet navneområde. Dette giver dig adgang til variablen eller funktionen fra en navneområde andet end den, hvor den blev oprettet.





For at forstå ovenstående tilfælde skal du overveje følgende kode som et eksempel:

#include

bruger navneområde std ;

navneområde matematik {

konst dobbelt PI = 3,14159 ;

dobbelt firkant ( dobbelt x ) {

Vend tilbage x * x ;

}

}

int vigtigste ( ) {

cout << 'Værdien af ​​PI er:' << matematik :: PI << endl ;

cout << 'Kvadratet af 5 er: ' << matematik :: firkant ( 5 ) << endl ;

Vend tilbage 0 ;

}

Ovenstående kode bruger matematisk navneområde at få adgang til 'PI' konstant og 'firkant' funktion ved hjælp af scope resolution operator '::' . Det udskriver derefter værdierne til konsollen.



Produktion

2: Få adgang til Global Variable i Program

Når det samme navn på lokale og globale variabler er til stede i programmet, kan den lokale variabel skjule den globale. I sådanne situationer kan du bruge scope resolution operator (::) for at få adgang til den globale variabel. Denne operator giver os mulighed for eksplicit at henvise til den globale variabel baseret på dens omfang.

For eksempel har vi i koden givet nedenfor henvist til den globale variabel 'en 'via scope resolution operator(::) , inde fra en funktion, hvor en lokal variabel med samme navn er blevet defineret:

#include

bruger navneområde std ;

int -en = femten ;

int vigtigste ( )

{

int -en = 35 ;

cout << 'Værdien af ​​den globale variabel a er' << :: -en << endl ;

cout << 'Værdien af ​​lokal variabel a er' << -en << endl ;

Vend tilbage 0 ;

}

I ovenstående kode er variablen a present uden for hovedfunktionen global variabel og variablen a inden for hovedfunktionen er lokal variabel med samme navn som den globale variabel. I cout-sætningen har vi brugt scope resolution-operatoren til at udskrive den globale variabel -en .

Produktion

3: Definer en funktion uden for klassen

I C++ kan du definere en klassefunktion uden for klassedefinitionen, og det kan gøres ved hjælp af scope resolution operator (::) for at angive, hvilken klasse funktionen tilhører. Dette er nødvendigt, fordi funktionen er defineret uden for klassens omfang.

Her er en eksempelkode, der demonstrerer denne brug af operatør for scope resolution :

#include

bruger navneområde std ;



klasse myClass {

offentlig :

ugyldig min funktion ( ) ;

} ;

ugyldig min klasse :: min funktion ( ) {

cout << 'myfunction() Kaldet !' ;

}

int vigtigste ( )

{

myClass classObj ;

klasseObj. min funktion ( ) ;

Vend tilbage 0 ;

}

I ovenstående kode er medlemsfunktionen min funktion() er defineret uden for klassen ved hjælp af scope resolution operator :: at præcisere det min funktion() tilhører klassen myClass.

Produktion

4: Få adgang til statiske medlemmer af klassen

I C++, når der er et statisk medlem, og en lokal variabel med samme navn er til stede i klassen, vil scope resolution operator (::) kan bruges til at få adgang til statiske medlemmer af en klasse. Dette gør det muligt for programmet at skelne mellem den lokale variabel og det statiske medlem.

Her er en eksempelkode, der relaterer brugen af operatør for scope resolution for et sådant tilfælde:

#include

bruger navneområde std ;

klasse myClass {

offentlig :

statisk int myStatVar ;

} ;

int min klasse :: myStatVar = 5 ;

int vigtigste ( ) {

int myStatVar = 10 ;

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

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

Vend tilbage 0 ;

}

Ovenstående program definerer først en klasse min klasse med en statisk medlemsvariabel myStatVar . Den definerer derefter en lokal variabel med samme navn inde i programmets hovedfunktion. For at få adgang til klassevariablen skal scope resolution operator (::) bruges sammen med klassenavnet min klasse . Programmet udsender værdien af ​​begge variabler til konsollen.

Produktion

5: Brug med flere arv

Det scope resolution operator (::) bruges også til at angive, hvilken version af et medlem der skal bruges, når en C++-klasse er afledt af flere overordnede klasser, der har medlemsvariabler eller funktioner med samme navn. Vi kan skelne mellem forskellige versioner af det samme medlem ved at bruge operatør for scope resolution efterfulgt af forældreklassens navn og medlemmets navn.

#include

bruger navneområde std ;

klasse Forælder 1 {

offentlig :

ugyldig Print ( ) {

cout << 'Dette er klasse Parent1 print funktion.' << endl ;

}

} ;

klasse Forælder 2 {
offentlig :
ugyldig Print ( ) {
cout << 'Dette er klasse Parent2 print funktion.' << endl ;
}
} ;
klasse myClass : offentlig forælder 1 , offentlig forælder 2 {
privat :
int på en ;

offentlig :
min klasse ( int n ) {
på en = n ;
}
ugyldig Print ( ) {
Forælder 1 :: Print ( ) ; // kalder Parent1's printfunktion
Forælder 2 :: Print ( ) ; // kalder Parent2's printfunktion
cout << 'Værdien af ​​num er: ' << på en << endl ; // udskriv værdien af ​​num
}
} ;
int vigtigste ( ) {
myClass obj ( 42 ) ; // opret et objekt af MyClass med num initialiseret til 42
obj. Print ( ) ; // kalder objektets print() funktion
Vend tilbage 0 ;
}

Ovenstående program demonstrerer brugen af scope resolution operator (::) at skelne mellem printfunktionerne af Forælder 1 og Forælder 2 når begge klasser er arvet af min klasse. Ved at kalde funktionerne med Forældreklasse navn foran funktionsnavnet, kan vi angive, hvilken version af funktionen der skal bruges.

Produktion

Bundlinie

Det scope resolution operator (::) er en vital komponent i C++, der bruges til at få adgang til variabelnavne på tværs af forskellige omfangsniveauer. Operatøren har forskellige anvendelser, herunder adgang til en variabel eller funktion i et andet navneområde, adgang til en global variabel, definering af en funktion uden for klassen, adgang til statiske medlemmer af en klasse og brug af flere nedarvninger. Selvom det kan være forvirrende for nye udviklere, forstår man scope resolution operator (::) er afgørende for god programmeringspraksis.