Mida teeb :: C++ keeles?

Mida Teeb C Keeles



C++ on mitmekülgne programmeerimiskeel, mis pakub arendajatele laia valikut funktsioone. Üks C++ kõige sagedamini kasutatavaid funktsioone on ulatuse eraldusvõime operaator , tuntud ka kui topeltkoolon (::) . Vaatamata sellele, et see on keele oluline osa, kahekordne koolon operaator võib paljudele arendajatele segadusse ajada, eriti neile, kes on sellega uued.

Selles juhendis vaatleme topeltkoolon (::) operaator keeles C++ ja kuidas see erinevates stsenaariumides töötab.

Mida teeb :: C++ keeles?

C++ keeles on ulatuse eraldusvõime operaator (::) kasutatakse erinevatel ulatustasemetel olevate muutujate nimede hankimiseks. Programmeerimise ulatus viitab kontekstile, kus muutujatele ja funktsioonidele on juurdepääs.







:: kasutusalad erinevatel juhtudel C++-s

C++ keeles on ulatuse eraldusvõime operaator (::) sellel on olenevalt kontekstist, milles seda kasutatakse. Järgmised on selle operaatori mõned märkimisväärsed kasutusalad:



1: pääsete juurde muutujale või funktsioonile erinevas nimeruumis

A nimeruum kasutatakse C++-s seotud funktsioonide, klasside ja muutujate rühmitamiseks, et vältida nimetamiskonflikte. Kui määratlete muutuja või funktsiooni a-s nimeruum , on muutuja või funktsiooni nimi nähtav ainult selles nimeruum .



C++-s saate kasutada ulatuse eraldusvõime operaator (::) koos nimeruum nimi ja muutuja või funktsiooni nimi, et pääseda juurde teises nimeruumis määratletud muutujale või funktsioonile. See võimaldab juurdepääsu muutujale või funktsioonile a nimeruum muud kui see, milles see loodi.





Ülaltoodud juhtumi mõistmiseks võtke näitena järgmine kood:

#include

kasutades nimeruumi std ;

nimeruumi matemaatika {

konst kahekordne PI = 3,14159 ;

kahekordne ruut ( kahekordne x ) {

tagasi x * x ;

}

}

int peamine ( ) {

cout << 'PI väärtus on: ' << matemaatika :: PI << endl ;

cout << '5 ruut on:' << matemaatika :: ruut ( 5 ) << endl ;

tagasi 0 ;

}

Ülaltoodud kood kasutab matemaatika nimeruum juurdepääsuks 'PI' pidev ja 'ruut' funktsiooni kasutades ulatuse eraldusvõime operaator '::' . Seejärel prindib see väärtused konsooli.



Väljund

2: Juurdepääs programmis globaalsele muutujale

Kui programmis on sama nimi kohalikel ja globaalsetel muutujatel, võib kohalik muutuja peita globaalse muutuja. Sellistes olukordades saate kasutada ulatuse eraldusvõime operaator (::) globaalsele muutujale juurdepääsuks. See operaator võimaldab meil selgelt viidata globaalsele muutujale selle ulatuse alusel.

Näiteks alltoodud koodis oleme viidanud globaalsele muutujale ‘a ‘ kaudu ulatuse eraldusvõime operaator(::) , funktsiooni seest, kus on määratletud sama nimega kohalik muutuja:

#include

kasutades nimeruumi std ;

int a = viisteist ;

int peamine ( )

{

int a = 35 ;

cout << 'Globaalse muutuja a väärtus on' << :: a << endl ;

cout << 'Kohaliku muutuja a väärtus on' << a << endl ;

tagasi 0 ;

}

Ülaltoodud koodis on põhifunktsioonist väljaspool olev muutuja a globaalne muutuja ja muutuja a põhifunktsioonis on kohalik muutuja globaalse muutujaga sama nimega. Cout-lauses oleme globaalse muutuja printimiseks kasutanud ulatuse eraldusvõime operaatorit a .

Väljund

3: määratlege funktsioon väljaspool klassi

C++-s saate määratleda klassifunktsiooni väljaspool klassi määratlust ja seda saab teha kasutades ulatuse eraldusvõime operaator (::) et määrata, millisesse klassi funktsioon kuulub. See on vajalik, kuna funktsioon on määratletud väljaspool klassi ulatust.

Siin on näide koodist, mis demonstreerib selle kasutamist ulatuse eraldusvõime operaator :

#include

kasutades nimeruumi std ;



klass myClass {

avalik :

tühine minu funktsioon ( ) ;

} ;

tühine minu klass :: minu funktsioon ( ) {

cout << 'myfunction() Called!' ;

}

int peamine ( )

{

myClass classObj ;

klassObj. minu funktsioon ( ) ;

tagasi 0 ;

}

Ülaltoodud koodis liigefunktsioon minu funktsioon () on määratletud väljaspool klassi kasutades ulatuse eraldusvõime operaator :: selle täpsustamiseks minu funktsioon () kuulub myClassi klassi.

Väljund

4: juurdepääs klassi staatilistele liikmetele

Kui C++-s on staatiline liige ja klassis on sama nimega kohalik muutuja, ulatuse eraldusvõime operaator (::) saab kasutada klassi staatiliste liikmete juurdepääsuks. See võimaldab programmil eristada kohalikku muutujat staatilisest liikmest.

Siin on näide koodist, mis on seotud ulatuse eraldusvõime operaator sellisel juhul:

#include

kasutades nimeruumi std ;

klass myClass {

avalik :

staatiline int myStatVar ;

} ;

int minu klass :: myStatVar = 5 ;

int peamine ( ) {

int myStatVar = 10 ;

cout << 'Kohalik muutuja myStatVar:' << myStatVar << endl ;

cout << 'Klassi muutuja myStatVar:' << minu klass :: myStatVar << endl ;

tagasi 0 ;

}

Ülaltoodud programm määratleb kõigepealt klassi minu klass staatilise liikme muutujaga myStatVar . Seejärel määratleb see programmi põhifunktsioonis sama nimega kohaliku muutuja. Klassimuutujale juurdepääsuks ulatuse eraldusvõime operaator (::) kasutatakse koos klassi nimega minu klass . Programm väljastab mõlema muutuja väärtuse konsooli.

Väljund

5: Kasutage koos mitme pärandiga

The ulatuse eraldusvõime operaator (::) kasutatakse ka selleks, et näidata, millist liikme versiooni kasutada, kui C++ klass on tuletatud mitmest ülemklassist, millel on sama nimega liikmemuutujad või funktsioonid. Saame eristada sama liikme erinevaid versioone, kasutades ulatuse eraldusvõime operaator millele järgneb vanemklassi nimi ja liikme nimi.

#include

kasutades nimeruumi std ;

klassi vanem1 {

avalik :

tühine printida ( ) {

cout << 'See on klassi Parent1 printimisfunktsioon.' << endl ;

}

} ;

klassi vanem2 {
avalik :
tühine printida ( ) {
cout << 'See on klassi Parent2 printimisfunktsioon.' << endl ;
}
} ;
klass myClass : avalik Vanem1 , avalik Vanem2 {
privaatne :
int ühel ;

avalik :
minu klass ( int n ) {
ühel = n ;
}
tühine printida ( ) {
Vanem1 :: printida ( ) ; // kutsub esile Parent1 printimisfunktsiooni
Vanem2 :: printida ( ) ; // Parent2 printimisfunktsiooni kutsumine
cout << 'Num väärtus on:' << ühel << endl ; // prindib välja numbri num väärtuse
}
} ;
int peamine ( ) {
myClass obj ( 42 ) ; // looge MyClassi objekt numbriga 42
obj. printida ( ) ; // kutsub esile objekti print() funktsiooni
tagasi 0 ;
}

Ülaltoodud programm demonstreerib rakenduse kasutamist ulatuse eraldusvõime operaator (::) printimisfunktsioonide eristamiseks Vanem1 ja Vanem2 kui mõlemad klassid on päritud minu klass. Funktsioonidele helistades Vanemate klass funktsiooni nime ees olev nimi, saame määrata, millist funktsiooni versiooni kasutada.

Väljund

Alumine joon

The ulatuse eraldusvõime operaator (::) on C++ oluline komponent, mida kasutatakse muutujate nimedele juurdepääsuks erinevatel ulatustasemetel. Operaatoril on mitmesuguseid kasutusvõimalusi, sealhulgas juurdepääs muutujale või funktsioonile erinevas nimeruumis, juurdepääs globaalsele muutujale, funktsiooni määratlemine väljaspool klassi, juurdepääs klassi staatilistele liikmetele ja mitme pärandi kasutamine. Kuigi see võib uutele arendajatele segadusse ajada, mõistab ulatuse eraldusvõime operaator (::) on hea programmeerimistava jaoks hädavajalik.