Wat doet :: in C++?

Wat Doet In C



C++ is een veelzijdige programmeertaal die ontwikkelaars een breed scala aan functionaliteit biedt. Een van de meest gebruikte functies in C++ is de scope-resolutie-operator , ook wel bekend als de dubbele punt (::) . Ondanks dat het een essentieel onderdeel van de taal is, de dubbele punt operator kan voor veel ontwikkelaars verwarrend zijn, vooral voor degenen die er nieuw mee zijn.

In deze gids kijken we naar de dubbele dubbele punt (::) operator in C++ en hoe het werkt in verschillende scenario's.

Wat doet :: in C++?

In C++ is de reikwijdte resolutie telefoniste (::) wordt gebruikt om de namen van de variabele op te halen die aanwezig zijn op verschillende scopeniveaus. Het bereik in programmeren verwijst naar de context waarin variabelen en functies toegankelijk zijn.







Gebruik van :: in verschillende gevallen in C++

In C++ is de scope resolutie-operator (::) heeft verschillende toepassingen, afhankelijk van de context waarin het wordt gebruikt. De volgende zijn enkele opmerkelijke toepassingen van deze operator:



1: Toegang tot een variabele of functie in een andere naamruimte

A naamruimte wordt in C++ gebruikt om gerelateerde functies, klassen en variabelen te groeperen om naamgevingsconflicten te voorkomen. Wanneer u een variabele of functie definieert binnen een naamruimte , is de naam van de variabele of functie alleen daarin zichtbaar naamruimte .



In C++ kun je de scope resolutie-operator (::) samen met de naamruimte naam en de naam van de variabele of functie om toegang te krijgen tot een variabele of functie die in een andere naamruimte is gedefinieerd. Dit stelt u in staat om toegang te krijgen tot de variabele of functie van a naamruimte anders dan die waarin het is gemaakt.





Beschouw de volgende code als voorbeeld om het bovenstaande geval te begrijpen:

#include

namespace std; gebruiken ;

naamruimte wiskunde {

const dubbele PI = 3.14159 ;

dubbele vierkant ( dubbele X ) {

opbrengst X * X ;

}

}

int voornaamst ( ) {

cout << 'De waarde van PI is: ' << wiskunde :: PI << eindel ;

cout << 'Het kwadraat van 5 is: ' << wiskunde :: vierkant ( 5 ) << eindel ;

opbrengst 0 ;

}

De bovenstaande code maakt gebruik van de wiskundige naamruimte om toegang te krijgen tot de 'PI' constante en 'vierkant' functie met behulp van de operator voor bereikresolutie '::' . Vervolgens worden de waarden naar de console afgedrukt.



Uitgang

2: Toegang tot globale variabele in programma

Wanneer dezelfde naam van lokale en globale variabelen aanwezig is in het programma, kan de lokale variabele de globale variabele verbergen. In dergelijke situaties kunt u de scope resolutie-operator (::) voor toegang tot de globale variabele. Met deze operator kunnen we expliciet verwijzen naar de globale variabele op basis van zijn bereik.

In de onderstaande code hebben we bijvoorbeeld verwezen naar de globale variabele 'A ' via de operator voor bereikresolutie (::) , vanuit een functie waarin een lokale variabele met dezelfde naam is gedefinieerd:

#include

namespace std; gebruiken ;

int A = vijftien ;

int voornaamst ( )

{

int A = 35 ;

cout << 'De waarde van globale variabele a is ' << :: A << eindel ;

cout << 'De waarde van lokale variabele a is ' << A << eindel ;

opbrengst 0 ;

}

In de bovenstaande code is de variabele die aanwezig is buiten de hoofdfunctie de globale variabele en de variabele a binnen de hoofdfunctie is de lokale variabele met dezelfde naam als de globale variabele. In de cout-instructie hebben we de scope-resolutie-operator gebruikt om de globale variabele af te drukken A .

Uitgang

3: Definieer een functie buiten de klasse

In C ++ kunt u een klassefunctie definiëren buiten de klassedefinitie en dit kan worden gedaan met behulp van de scope resolutie-operator (::) om aan te geven tot welke klasse de functie behoort. Dit is nodig omdat de functie buiten het bereik van de klasse is gedefinieerd.

Hier is een voorbeeldcode die dit gebruik van de scope-resolutie-operator :

#include

namespace std; gebruiken ;



klasse mijnKlasse {

openbaar :

leegte mijnfunctie ( ) ;

} ;

leegte mijn klas :: mijnfunctie ( ) {

cout << 'mijnfunctie() Geroepen!' ;

}

int voornaamst ( )

{

myClass classObj ;

klasseObj. mijnfunctie ( ) ;

opbrengst 0 ;

}

In de bovenstaande code is de lidfunctie mijnfunctie() wordt buiten de klasse gedefinieerd met behulp van de scope resolutie-operator :: om dat te specificeren mijnfunctie() behoort tot de myClass-klasse.

Uitgang

4: Toegang tot statische leden van de klas

Als er in C++ een statisch lid is en er een lokale variabele met dezelfde naam aanwezig is in de klasse, wordt het scope resolutie-operator (::) kan worden gebruikt om toegang te krijgen tot statische leden van een klasse. Hierdoor kan het programma onderscheid maken tussen de lokale variabele en het statische lid.

Hier is een voorbeeldcode die betrekking heeft op het gebruik van scope-resolutie-operator voor zo'n geval:

#include

namespace std; gebruiken ;

klasse mijnKlasse {

openbaar :

statisch int mijnStatVar ;

} ;

int mijn klas :: mijnStatVar = 5 ;

int voornaamst ( ) {

int mijnStatVar = 10 ;

cout << 'Lokale variabele myStatVar: ' << mijnStatVar << eindel ;

cout << 'Klassevariabele myStatVar: ' << mijn klas :: mijnStatVar << eindel ;

opbrengst 0 ;

}

Het bovenstaande programma definieert eerst een klasse mijn klas met een statische lidvariabele mijnStatVar . Vervolgens definieert het een lokale variabele met dezelfde naam binnen de hoofdfunctie van het programma. Om toegang te krijgen tot de class-variabele, de scope resolutie-operator (::) wordt gebruikt met de klassenaam mijn klas . Het programma stuurt de waarde van beide variabelen naar de console.

Uitgang

5: Gebruik met meerdere erfenissen

De scope resolutie-operator (::) wordt ook gebruikt om aan te geven welke versie van een lid moet worden gebruikt wanneer een C++-klasse is afgeleid van meerdere bovenliggende klassen die lidvariabelen of functies met dezelfde naam hebben. We kunnen onderscheid maken tussen verschillende versies van hetzelfde lid door de scope-resolutie-operator gevolgd door de naam van de bovenliggende klasse en de naam van het lid.

#include

namespace std; gebruiken ;

klas Ouder1 {

openbaar :

leegte afdrukken ( ) {

cout << 'Dit is de printfunctie van klasse Parent1.' << eindel ;

}

} ;

klas Ouder2 {
openbaar :
leegte afdrukken ( ) {
cout << 'Dit is de printfunctie van klasse Parent2.' << eindel ;
}
} ;
klasse mijnKlasse : openbare ouder1 , openbare ouder2 {
privaat :
int op een ;

openbaar :
mijn klas ( int N ) {
op een = N ;
}
leegte afdrukken ( ) {
Ouder1 :: afdrukken ( ) ; // bel de printfunctie van Parent1
Ouder2 :: afdrukken ( ) ; // bel de printfunctie van Parent2
cout << 'De waarde van num is: ' << op een << eindel ; // druk de waarde van num af
}
} ;
int voornaamst ( ) {
mijnKlasse obj ( 42 ) ; // maak een object van MyClass met nummer geïnitialiseerd op 42
obj. afdrukken ( ) ; // roep de functie print() van het object aan
opbrengst 0 ;
}

Het bovenstaande programma demonstreert het gebruik van de scope resolutie-operator (::) onderscheid te maken tussen de afdrukfuncties van Ouder1 En Ouder2 wanneer beide klassen worden geërfd door mijn klas. Door de functies aan te roepen met de Ouder klasse naam voorafgaand aan de functienaam, kunnen we specificeren welke versie van de functie moet worden gebruikt.

Uitgang

Het komt erop neer

De scope resolutie-operator (::) is een essentieel onderdeel in C ++ dat wordt gebruikt om toegang te krijgen tot variabelenamen op verschillende bereikniveaus. De operator heeft verschillende toepassingen, waaronder toegang tot een variabele of functie in een andere naamruimte, toegang tot een globale variabele, het definiëren van een functie buiten de klasse, toegang tot statische leden van een klasse en het gebruik van meerdere overervingen. Hoewel het voor nieuwe ontwikkelaars verwarrend kan zijn, is het begrijpen van de scope resolutie-operator (::) is essentieel voor een goede programmeerpraktijk.