Čo robí :: v C++?

Co Robi V C



C++ je všestranný programovací jazyk, ktorý vývojárom ponúka širokú škálu funkcií. Jednou z najčastejšie používaných funkcií v C++ je operátor rozlíšenia rozsahu , tiež známy ako dvojitá dvojbodka (::) . Napriek tomu, že je dôležitou súčasťou jazyka, dvojité hrubé črevo Operátor môže byť pre mnohých vývojárov mätúci, najmä pre tých, ktorí sú v ňom noví.

V tejto príručke sa pozrieme na operátor dvojitej dvojbodky (::). v C++ a ako to funguje v rôznych scenároch.

Čo robí :: v C++?

V C++ je rozlíšenie rozsahu operátor (::) sa používa na získanie názvov premenných prítomných na rôznych úrovniach rozsahu. Rozsah v programovaní sa vzťahuje na kontext, v ktorom je možné pristupovať k premenným a funkciám.







Použitie :: v rôznych prípadoch v C++

V C++ je operátor rozlíšenia rozsahu (::) má rôzne využitie v závislosti od kontextu, v ktorom sa používa. Nasleduje niekoľko pozoruhodných použití tohto operátora:



1: Prístup k premennej alebo funkcii v inom mennom priestore

A menný priestor sa používa v C++ na zoskupenie súvisiacich funkcií, tried a premenných, aby sa predišlo konfliktom názvov. Keď definujete premennú alebo funkciu v rámci a menný priestor , názov premennej alebo funkcie je viditeľný iba v rámci nej menný priestor .



V C++ môžete použiť operátor rozlíšenia rozsahu (::) spolu s menný priestor názov a názov premennej alebo funkcie na prístup k premennej alebo funkcii definovanej v inom priestore názvov. To vám umožňuje prístup k premennej alebo funkcii z a menný priestor iný ako ten, v ktorom bol vytvorený.





Ak chcete pochopiť vyššie uvedený prípad, zvážte nasledujúci kód ako príklad:

#include

pomocou menného priestoru std ;

matematika menného priestoru {

konšt dvojitý PI = 3,14159 ;

dvojitý námestie ( dvojitý X ) {

vrátiť X * X ;

}

}

int Hlavná ( ) {

cout << 'Hodnota PI je: ' << matematika :: PI << endl ;

cout << 'Štvorec 5 je:' << matematika :: námestie ( 5 ) << endl ;

vrátiť 0 ;

}

Vyššie uvedený kód používa matematický menný priestor na prístup k 'PI' konštantný a 'námestie' funkciu pomocou operátor rozlíšenia rozsahu „::“ . Potom vytlačí hodnoty do konzoly.



Výkon

2: Prístup ku globálnej premennej v programe

Ak je v programe prítomný rovnaký názov lokálnych a globálnych premenných, lokálna premenná môže skrývať globálnu. V takýchto situáciách môžete použiť operátor rozlíšenia rozsahu (::) pre prístup ku globálnej premennej. Tento operátor nám umožňuje explicitne odkazovať na globálnu premennú na základe jej rozsahu.

Napríklad v kóde uvedenom nižšie sme odkazovali na globálnu premennú „a “ cez operátor rozlíšenia rozsahu(::) , z vnútra funkcie, kde bola definovaná lokálna premenná s rovnakým názvom:

#include

pomocou menného priestoru std ;

int a = pätnásť ;

int Hlavná ( )

{

int a = 35 ;

cout << 'Hodnota globálnej premennej a je' << :: a << endl ;

cout << 'Hodnota lokálnej premennej a je' << a << endl ;

vrátiť 0 ;

}

Vo vyššie uvedenom kóde je premenná a prítomná mimo hlavnej funkcie globálna premenná a premenná a v rámci hlavnej funkcie je lokálna premenná s rovnakým názvom ako globálna premenná. V príkaze cout sme na tlač globálnej premennej použili operátor rozlíšenia rozsahu a .

Výkon

3: Definujte funkciu mimo triedy

V C++ môžete definovať funkciu triedy mimo definície triedy a dá sa to urobiť pomocou operátor rozlíšenia rozsahu (::) určiť, do ktorej triedy funkcia patrí. Je to potrebné, pretože funkcia je definovaná mimo rozsahu triedy.

Tu je príklad kódu, ktorý demonštruje toto použitie operátor rozlíšenia rozsahu :

#include

pomocou menného priestoru std ;



trieda mojaTrieda {

verejnosti :

neplatné moja funkcia ( ) ;

} ;

neplatné moja trieda :: moja funkcia ( ) {

cout << 'myfunction() Called!' ;

}

int Hlavná ( )

{

myClass classObj ;

classObj. moja funkcia ( ) ;

vrátiť 0 ;

}

Vo vyššie uvedenom kóde je členská funkcia mojafunkcia() je definovaný mimo triedy pomocou operátor rozlíšenia rozsahu :: aby som to upresnil mojafunkcia() patrí do triedy myClass.

Výkon

4: Prístup k statickým členom triedy

V C++, keď existuje statický člen a lokálna premenná s rovnakým názvom je prítomná v triede, operátor rozlíšenia rozsahu (::) možno použiť na prístup k statickým členom triedy. To umožňuje programu rozlišovať medzi lokálnou premennou a statickým členom.

Tu je príklad kódu, ktorý súvisí s použitím operátor rozlíšenia rozsahu pre takýto prípad:

#include

pomocou menného priestoru std ;

trieda mojaTrieda {

verejnosti :

statické int myStatVar ;

} ;

int moja trieda :: myStatVar = 5 ;

int Hlavná ( ) {

int myStatVar = 10 ;

cout << 'Miestna premenná myStatVar: ' << myStatVar << endl ;

cout << 'Premenná triedy myStatVar: ' << moja trieda :: myStatVar << endl ;

vrátiť 0 ;

}

Vyššie uvedený program najskôr definuje triedu moja trieda so statickou členskou premennou myStatVar . Potom definuje lokálnu premennú s rovnakým názvom v hlavnej funkcii programu. Ak chcete získať prístup k premennej triedy, operátor rozlíšenia rozsahu (::) sa používa s názvom triedy moja trieda . Program vypíše hodnotu oboch premenných do konzoly.

Výkon

5: Použitie s viacnásobnou dedičnosťou

The operátor rozlíšenia rozsahu (::) sa tiež používa na označenie, ktorá verzia člena sa má použiť, keď je trieda C++ odvodená z viacerých rodičovských tried, ktoré majú členské premenné alebo funkcie s rovnakým názvom. Medzi rôznymi verziami toho istého člena môžeme rozlíšiť pomocou operátor rozlíšenia rozsahu nasleduje názov nadradenej triedy a meno člena.

#include

pomocou menného priestoru std ;

trieda Rodič1 {

verejnosti :

neplatné vytlačiť ( ) {

cout << 'Toto je tlačová funkcia triedy Parent1.' << endl ;

}

} ;

trieda Rodič2 {
verejnosti :
neplatné vytlačiť ( ) {
cout << 'Toto je funkcia tlače triedy Parent2.' << endl ;
}
} ;
trieda mojaTrieda : verejný rodič1 , verejný rodič2 {
súkromné :
int na jeden ;

verejnosti :
moja trieda ( int n ) {
na jeden = n ;
}
neplatné vytlačiť ( ) {
Rodič1 :: vytlačiť ( ) ; // zavolajte funkciu tlače Parent1
Rodič2 :: vytlačiť ( ) ; // volanie funkcie tlače Parent2
cout << 'Hodnota num je: ' << na jeden << endl ; // vypíše hodnotu num
}
} ;
int Hlavná ( ) {
myClass obj ( 42 ) ; // vytvorte objekt MyClass s num inicializovaným na 42
obj. vytlačiť ( ) ; // zavolá funkciu print() objektu
vrátiť 0 ;
}

Vyššie uvedený program demonštruje použitie operátor rozlíšenia rozsahu (::) rozlišovať medzi funkciami tlače Rodič1 a Rodič2 keď obe triedy zdedí moja trieda. Volaním funkcií pomocou Rodičovská trieda názov pred názvom funkcie, môžeme určiť, ktorá verzia funkcie sa má použiť.

Výkon

Spodná čiara

The operátor rozlíšenia rozsahu (::) je dôležitý komponent v C++, ktorý sa používa na prístup k názvom premenných na rôznych úrovniach rozsahu. Operátor má rôzne využitie, vrátane prístupu k premennej alebo funkcii v inom mennom priestore, prístupu ku globálnej premennej, definovania funkcie mimo triedy, prístupu k statickým členom triedy a použitia viacerých dedičstiev. Aj keď to môže byť pre nových vývojárov mätúce, pochopenie operátor rozlíšenia rozsahu (::) je nevyhnutné pre správnu programovaciu prax.