Co dělá :: v C++?

Co Dela V C



C++ je všestranný programovací jazyk, který nabízí vývojářům širokou škálu funkcí. Jednou z nejčastěji používaných funkcí v C++ je operátor rozlišení rozsahu , také známý jako dvojitá dvojtečka (::) . Přestože se jedná o důležitou součást jazyka, dvojitá dvojtečka Operátor může být pro mnoho vývojářů matoucí, zejména pro ty, kteří s ním začínají.

V tomto návodu se podíváme na operátor dvojtečky (::). v C++ a jak to funguje v různých scénářích.

Co dělá :: v C++?

V C++ je rozlišení rozsahu operátor (::) se používá k načtení názvů proměnných přítomných na různých úrovních rozsahu. Rozsah v programování odkazuje na kontext, kde lze přistupovat k proměnným a funkcím.







Použití :: v různých případech v C++

V C++ je operátor rozlišení rozsahu (::) má různá použití v závislosti na kontextu, ve kterém se používá. Níže jsou uvedena některá pozoruhodná použití tohoto operátoru:



1: Přístup k proměnné nebo funkci v jiném jmenném prostoru

A jmenný prostor se používá v C++ k seskupování souvisejících funkcí, tříd a proměnných, aby se zabránilo konfliktům v názvech. Když definujete proměnnou nebo funkci v a jmenný prostor , název proměnné nebo funkce je viditelný pouze v něm jmenný prostor .



V C++ můžete použít operátor rozlišení rozsahu (::) spolu s jmenný prostor název a název proměnné nebo funkce pro přístup k proměnné nebo funkci definované v jiném jmenném prostoru. To vám umožní přístup k proměnné nebo funkci z a jmenný prostor jiný než ten, ve kterém byl vytvořen.





Chcete-li porozumět výše uvedenému případu, zvažte následující kód jako příklad:

#include

pomocí jmenného prostoru std ;

matematika jmenného prostoru {

konst dvojnásobek PI = 3,14159 ;

dvojnásobek náměstí ( dvojnásobek X ) {

vrátit se X * X ;

}

}

int hlavní ( ) {

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

cout << 'Čtverec 5 je:' << matematika :: náměstí ( 5 ) << endl ;

vrátit se 0 ;

}

Výše uvedený kód používá matematický jmenný prostor pro přístup k 'PI' konstantní a 'náměstí' funkce pomocí operátor rozlišení rozsahu „::“ . Poté vytiskne hodnoty do konzoly.



Výstup

2: Přístup ke globální proměnné v programu

Pokud je v programu přítomen stejný název lokální a globální proměnné, může lokální proměnná skrývat globální. V takových situacích můžete použít operátor rozlišení rozsahu (::) pro přístup ke globální proměnné. Tento operátor nám umožňuje explicitně odkazovat na globální proměnnou na základě jejího rozsahu.

Například v kódu uvedeném níže jsme odkazovali na globální proměnnou 'A ‘ přes operátor rozlišení rozsahu(::) , zevnitř funkce, kde byla definována lokální proměnná se stejným názvem:

#include

pomocí jmenného prostoru std ;

int A = patnáct ;

int hlavní ( )

{

int A = 35 ;

cout << 'Hodnota globální proměnné a je' << :: A << endl ;

cout << 'Hodnota lokální proměnné a je' << A << endl ;

vrátit se 0 ;

}

Ve výše uvedeném kódu je proměnná a přítomná mimo hlavní funkci the globální proměnná a proměnná a v rámci hlavní funkce je lokální proměnná se stejným názvem jako globální proměnná. V příkazu cout jsme k tisku globální proměnné použili operátor rozlišení rozsahu A .

Výstup

3: Definujte funkci mimo třídu

V C++ můžete definovat funkci třídy mimo definici třídy a lze to provést pomocí operátor rozlišení rozsahu (::) určit, do které třídy funkce patří. To je nutné, protože funkce je definována mimo rozsah třídy.

Zde je příklad kódu, který demonstruje toto použití operátor rozlišení rozsahu :

#include

pomocí jmenného prostoru std ;



třída myClass {

veřejnost :

prázdnota moje funkce ( ) ;

} ;

prázdnota moje třída :: moje funkce ( ) {

cout << 'myfunction() Called!' ;

}

int hlavní ( )

{

myClass classObj ;

classObj. moje funkce ( ) ;

vrátit se 0 ;

}

Ve výše uvedeném kódu členská funkce mojefunkce() je definován mimo třídu pomocí operátor rozlišení rozsahu :: abych to upřesnil mojefunkce() patří do třídy myClass.

Výstup

4: Přístup ke statickým členům třídy

Pokud v C++ existuje statický člen a v rámci třídy je přítomna lokální proměnná se stejným názvem, je to operátor rozlišení rozsahu (::) lze použít pro přístup ke statickým členům třídy. To umožňuje programu rozlišovat mezi lokální proměnnou a statickým členem.

Zde je příklad kódu, který souvisí s použitím operátor rozlišení rozsahu pro takový případ:

#include

pomocí jmenného prostoru std ;

třída myClass {

veřejnost :

statický int myStatVar ;

} ;

int moje třída :: myStatVar = 5 ;

int hlavní ( ) {

int myStatVar = 10 ;

cout << 'Místní proměnná myStatVar: ' << myStatVar << endl ;

cout << 'Proměnná třídy myStatVar: ' << moje třída :: myStatVar << endl ;

vrátit se 0 ;

}

Výše uvedený program nejprve definuje třídu moje třída se statickou členskou proměnnou myStatVar . Potom definuje lokální proměnnou se stejným názvem uvnitř hlavní funkce programu. Chcete-li získat přístup k proměnné třídy, operátor rozlišení rozsahu (::) se používá s názvem třídy moje třída . Program vypíše hodnotu obou proměnných do konzole.

Výstup

5: Použití s ​​vícenásobnou dědičností

The operátor rozlišení rozsahu (::) se také používá k označení verze člena, která se má použít, když je třída C++ odvozena z více nadřazených tříd, které mají členské proměnné nebo funkce se stejným názvem. Můžeme rozlišovat mezi různými verzemi stejného členu pomocí operátor rozlišení rozsahu následovaný názvem nadřazené třídy a jménem člena.

#include

pomocí jmenného prostoru std ;

třída Rodič1 {

veřejnost :

prázdnota tisk ( ) {

cout << 'Toto je tisková funkce třídy Parent1.' << endl ;

}

} ;

třída Rodič2 {
veřejnost :
prázdnota tisk ( ) {
cout << 'Toto je tisková funkce třídy Parent2.' << endl ;
}
} ;
třída myClass : veřejný rodič1 , veřejný rodič2 {
soukromé :
int na jednom ;

veřejnost :
moje třída ( int n ) {
na jednom = n ;
}
prázdnota tisk ( ) {
Rodič1 :: tisk ( ) ; // volání funkce tisku Parent1
Rodič2 :: tisk ( ) ; // volání funkce tisku Parent2
cout << 'Hodnota num je: ' << na jednom << endl ; // vypíše hodnotu num
}
} ;
int hlavní ( ) {
myClass obj ( 42 ) ; // vytvořte objekt MyClass s num inicializovaným na 42
obj. tisk ( ) ; // volání funkce print() objektu
vrátit se 0 ;
}

Výše uvedený program demonstruje použití operátor rozlišení rozsahu (::) rozlišovat mezi tiskovými funkcemi Rodič1 a Rodič2 když obě třídy zdědí moje třída. Voláním funkcí pomocí Rodičovská třída název před názvem funkce, můžeme určit, jakou verzi funkce použít.

Výstup

Sečteno a podtrženo

The operátor rozlišení rozsahu (::) je životně důležitá součást v C++ používaná pro přístup k názvům proměnných na různých úrovních rozsahu. Operátor má různá použití, včetně přístupu k proměnné nebo funkci v jiném jmenném prostoru, přístupu ke globální proměnné, definování funkce mimo třídu, přístupu ke statickým členům třídy a použití vícenásobné dědičnosti. I když to může být pro nové vývojáře matoucí, pochopení operátor rozlišení rozsahu (::) je nezbytný pro správnou programátorskou praxi.