Kaj počne :: v C++?

Kaj Pocne V C



C++ je vsestranski programski jezik, ki razvijalcem ponuja široko paleto funkcionalnosti. Ena najpogosteje uporabljenih funkcij v C++ je operator resolucije obsega , znan tudi kot dvojno dvopičje (::) . Čeprav je pomemben del jezika, je dvojno debelo črevo operater lahko zmede številne razvijalce, zlasti tiste, ki so novi.

V tem priročniku si bomo ogledali dvojno dvopičje (::) operator v C++ in kako deluje v različnih scenarijih.

Kaj počne :: v C++?

V C++ je ločljivost obsega operater (::) se uporablja za pridobivanje imen spremenljivk, ki so prisotna na različnih ravneh obsega. Obseg v programiranju se nanaša na kontekst, kjer je mogoče dostopati do spremenljivk in funkcij.







Uporaba :: v različnih primerih v C++

V C++ je operator resolucije obsega (::) ima različne uporabe, odvisno od konteksta, v katerem se uporablja. Sledi nekaj pomembnih uporab tega operaterja:



1: Dostop do spremenljivke ali funkcije v drugem imenskem prostoru

A imenski prostor se v C++ uporablja za združevanje sorodnih funkcij, razredov in spremenljivk, da se izogne ​​sporom pri poimenovanju. Ko definirate spremenljivko ali funkcijo znotraj a imenski prostor , je ime spremenljivke ali funkcije vidno samo znotraj tega imenski prostor .



V C++ lahko uporabite operator resolucije obsega (::) skupaj z imenski prostor ime in ime spremenljivke ali funkcije za dostop do spremenljivke ali funkcije, definirane v drugem imenskem prostoru. To vam omogoča dostop do spremenljivke ali funkcije iz a imenski prostor razen tistega, v katerem je bil ustvarjen.





Za razumevanje zgornjega primera upoštevajte naslednjo kodo kot primer:

#include

uporaba imenskega prostora std ;

matematika imenskega prostora {

konst dvojno PI = 3,14159 ;

dvojno kvadrat ( dvojno x ) {

vrnitev x * x ;

}

}

int glavni ( ) {

cout << 'Vrednost PI je: ' << matematika :: PI << konec ;

cout << 'Kvadrat 5 je: ' << matematika :: kvadrat ( 5 ) << konec ;

vrnitev 0 ;

}

Zgornja koda uporablja imenski prostor matematike za dostop do 'PI' stalna in 'kvadrat' funkcijo z uporabo operator resolucije obsega “::” . Nato natisne vrednosti na konzolo.



Izhod

2: Dostop do globalne spremenljivke v programu

Ko je v programu prisotno isto ime lokalnih in globalnih spremenljivk, lahko lokalna spremenljivka skrije globalno. V takšnih situacijah lahko uporabite operator resolucije obsega (::) za dostop do globalne spremenljivke. Ta operator nam omogoča eksplicitno sklicevanje na globalno spremenljivko glede na njen obseg.

Na primer, v spodnji kodi smo se sklicevali na globalno spremenljivko 'a ' prek operator resolucije obsega(::) , znotraj funkcije, kjer je bila definirana lokalna spremenljivka z istim imenom:

#include

uporaba imenskega prostora std ;

int a = petnajst ;

int glavni ( )

{

int a = 35 ;

cout << 'Vrednost globalne spremenljivke a je ' << :: a << konec ;

cout << 'Vrednost lokalne spremenljivke a je ' << a << konec ;

vrnitev 0 ;

}

V zgornji kodi je spremenljivka a prisotna zunaj glavne funkcije globalna spremenljivka in spremenljivka a znotraj glavne funkcije je lokalna spremenljivka z istim imenom kot globalna spremenljivka. V stavku cout smo za tiskanje globalne spremenljivke uporabili operator ločljivosti obsega a .

Izhod

3: Definirajte funkcijo zunaj razreda

V C++ lahko definirate funkcijo razreda zunaj definicije razreda in to lahko storite z uporabo operator resolucije obsega (::) da določite, kateremu razredu pripada funkcija. To je potrebno, ker je funkcija definirana zunaj obsega razreda.

Tukaj je primer kode, ki prikazuje to uporabo operator resolucije obsega :

#include

uporaba imenskega prostora std ;



razred mojRazred {

javnosti :

praznina moja funkcija ( ) ;

} ;

praznina moj razred :: moja funkcija ( ) {

cout << 'myfunction() Called!' ;

}

int glavni ( )

{

mojRazred classObj ;

classObj. moja funkcija ( ) ;

vrnitev 0 ;

}

V zgornji kodi funkcija članica moja funkcija() je definiran zunaj razreda z uporabo operator resolucije obsega :: da to določim moja funkcija() spada v razred myClass.

Izhod

4: Dostop do statičnih članov razreda

V C++, ko je v razredu statični član in lokalna spremenljivka z istim imenom, operator resolucije obsega (::) se lahko uporablja za dostop do statičnih članov razreda. To programu omogoča razlikovanje med lokalno spremenljivko in statičnim članom.

Tukaj je primer kode, ki se nanaša na uporabo operator resolucije obsega za tak primer:

#include

uporaba imenskega prostora std ;

razred mojRazred {

javnosti :

statična int myStatVar ;

} ;

int moj razred :: myStatVar = 5 ;

int glavni ( ) {

int myStatVar = 10 ;

cout << 'Lokalna spremenljivka myStatVar: ' << myStatVar << konec ;

cout << 'Spremenljivka razreda myStatVar: ' << moj razred :: myStatVar << konec ;

vrnitev 0 ;

}

Zgornji program najprej definira razred moj razred s statično spremenljivko člana myStatVar . Nato znotraj glavne funkcije programa definira lokalno spremenljivko z istim imenom. Za dostop do spremenljivke razreda je operator resolucije obsega (::) se uporablja z imenom razreda moj razred . Program izpiše vrednost obeh spremenljivk na konzolo.

Izhod

5: Uporaba z več dedovanjem

The operator resolucije obsega (::) se uporablja tudi za označevanje, katero različico člana uporabiti, ko je razred C++ izpeljan iz več nadrejenih razredov, ki imajo članske spremenljivke ali funkcije z istim imenom. Razlikujemo lahko med različnimi različicami istega člana z uporabo operator resolucije obsega ki mu sledi ime nadrejenega razreda in ime člana.

#include

uporaba imenskega prostora std ;

razred Starš1 {

javnosti :

praznina tiskanje ( ) {

cout << 'To je tiskalna funkcija razreda Parent1.' << konec ;

}

} ;

razred Starš2 {
javnosti :
praznina tiskanje ( ) {
cout << 'To je tiskalna funkcija razreda Parent2.' << konec ;
}
} ;
razred mojRazred : javni Nadrejeni1 , javni Nadrejeni2 {
zasebno :
int na enem ;

javnosti :
moj razred ( int n ) {
na enem = n ;
}
praznina tiskanje ( ) {
starš1 :: tiskanje ( ) ; // pokliči tiskalno funkcijo Parent1
Starš2 :: tiskanje ( ) ; // pokliči tiskalno funkcijo Parent2
cout << 'Vrednost num je: ' << na enem << konec ; // izpis vrednosti num
}
} ;
int glavni ( ) {
mojRazred obj ( 42 ) ; // ustvarite objekt MyClass s num, inicializiranim na 42
obj. tiskanje ( ) ; // pokliči funkcijo print() objekta
vrnitev 0 ;
}

Zgornji program prikazuje uporabo operator resolucije obsega (::) za razlikovanje med funkcijami tiskanja starš1 in Starš2 ko oba razreda podedujeta moj razred. S klicem funkcij z Razred staršev ime pred imenom funkcije, lahko določimo, katero različico funkcije naj uporabimo.

Izhod

Spodnja črta

The operator resolucije obsega (::) je ključna komponenta v C++, ki se uporablja za dostop do imen spremenljivk na različnih ravneh obsega. Operator ima različne uporabe, vključno z dostopom do spremenljivke ali funkcije v drugem imenskem prostoru, dostopom do globalne spremenljivke, definiranjem funkcije zunaj razreda, dostopom do statičnih članov razreda in uporabo več dedovanja. Čeprav je lahko nove razvijalce zmedeno, razumevanje operator resolucije obsega (::) je bistvenega pomena za dobro prakso programiranja.