Come utilizzare al meglio l'operatore di risoluzione dell'ambito in C ++?

Questo articolo introdurrà l'operatore di risoluzione dell'ambito in C ++ e seguirà una dimostrazione a livello di codice per una comprensione dettagliata.

Come suggerisce il nome, l'operatore di risoluzione dell'ambito viene utilizzato per ottenere i nomi nascosti a causa degli ambiti variabili in modo da poterli ancora utilizzare. In questo articolo capiremo come utilizzare l'operatore di risoluzione dell'ambito in C ++ e quali sono i suoi scopi diversi da un .

In C ++, l'operatore di risoluzione dell'ambito è ::. L'operatore di risoluzione dell'ambito in C ++ può essere utilizzato per:





Ora capiamo ciascuno degli scopi uno per uno con l'aiuto di esempi.

Accesso a una variabile globale quando è presente una variabile locale con stesso nome

È possibile utilizzare l'operatore di risoluzione dell'ambito per accedere alla variabile globale se si dispone di una variabile locale con lo stesso nome. Nell'esempio seguente abbiamo due variabili entrambe denominate num con ambito globale e locale. Quindi, per accedere alla variabile num globale nella classe principale è necessario utilizzare l'operatore di risoluzione dell'ambito (ad esempio :: num).



Esempio

#include using namespace std int num = 30 // Inizializzazione di una variabile globale num int main () {int num = 10 // Inizializzazione della variabile locale num cout<< 'Value of global num is ' << ::num cout << 'nValue of local num is ' << num return 0 } 

Produzione

Andando avanti con questo articolo sull'operatore di risoluzione dell'ambito in C ++



Definizione di una funzione al di fuori di una classe

Se si dichiara una funzione in una classe e successivamente si desidera definirla al di fuori della classe, è possibile farlo utilizzando l'operatore di risoluzione dell'ambito. Nell'esempio seguente, dichiariamo una funzione Speed ​​in Class Bike. Successivamente definiremo la funzione nella classe principale utilizzando l'operatore di risoluzione dell'ambito.

come elevare qualcosa a una potenza in java

Esempio

#include using namespace std class Bike {public: // Just the Function Declaration void Speed ​​()} // Definire la funzione Speed ​​al di fuori della classe Bike utilizzando :: void Bike :: Speed ​​() {cout<< 'Speed of Bike is 90 KMPH' } int main() { Bike bike bike.Speed() return 0 } 

Produzione

Andando avanti con questo articolo sull'operatore di risoluzione dell'ambito in C ++

Accesso alla statica di una classe variabili

È possibile accedere alla variabile statica della classe utilizzando il nome della classe e l'operatore di risoluzione dell'ambito (ad es. Class_name :: static_variable). Puoi vedere nell'esempio seguente, stiamo dichiarando una variabile statica nella classe. Stiamo definendo la variabile al di fuori della classe utilizzando l'operatore di risoluzione dell'ambito. Quindi accediamo utilizzando il nome della classe e l'operatore di risoluzione dell'ambito.

Esempio

#include using namespace std class Prova {static int num1 public: static int num2 // Il parametro locale nasconde il membro della classe // È possibile accedere al membro della classe utilizzando la funzione :: void (int num1) {// num1 è possibile accedere alla variabile statica utilizzando :: // nonostante la variabile locale num1 cout<< 'Static num1: ' << Try::num1 cout << 'nLocal num1: ' << num1 } } // Defining a static members explicitly using :: int Try::num1 = 10 int Try::num2 = 15 int main() { Try o int num1 = 20 o.function(num1) cout << 'nTry::num2 = ' << Try::num2 return 0 } 

Produzione

Andando avanti con questo articolo sull'operatore di risoluzione dell'ambito in C ++

Riferendosi a una classe all'interno di un'altra classe

È possibile creare classi nidificate con gli stessi nomi di variabili in entrambe le classi. È possibile accedere a entrambe le variabili utilizzando l'operatore di risoluzione dell'ambito. Per la variabile della classe interna, è necessario utilizzare Outer_Class :: Inner_Class :: variabile.

Esempio

#include using namespace std class Outside_class {public: int num class Inside_class {public: int num static int x}} int Outside_class :: Inside_class :: x = 5 int main () {Outside_class A Outside_class :: Inside_class B}

Andando avanti con questo articolo sull'operatore di risoluzione dell'ambito in C ++

In caso di eredità multipla

Se si hanno due classi padre con gli stessi nomi di variabile e le si ereditano entrambe nella classe figlia, è possibile utilizzare l'operatore di risoluzione dell'ambito con il nome della classe per accedere alle singole variabili.

Nell'esempio seguente, stiamo creando due classi genitore Parent1 e Parent2, ed entrambi hanno la variabile num. Quando ereditiamo entrambi nella classe Child, possiamo accedere a entrambe le variabili num utilizzando il nome della classe e l'operatore di risoluzione dell'ambito.

Esempio

#include using namespace std class Parent1 {protected: int num public: Parent1 () {num = 100}} class Parent2 {protected: int num public: Parent2 () {num = 200}} class Child: public Parent1, public Parent2 { public: void function () {cout<< 'Parent1's num is ' << Parent1::num cout << 'nParent2's num is ' << Parent2::num } } int main() { Child obj obj.function() return 0 } 

Produzione

Andando avanti con questo articolo sull'operatore di risoluzione dell'ambito in C ++

Spazio dei nomi

Supponiamo di avere due spazi dei nomi e che entrambi contengano una classe con lo stesso nome. Quindi, per evitare qualsiasi conflitto, possiamo usare il nome dello spazio dei nomi con l'operatore di risoluzione dell'ambito. Nell'esempio seguente stiamo usando std :: cout .

Esempio

#include int main () {std :: cout<< 'Hello' << std::endl } 

Produzione

Ora, dopo aver esaminato i programmi precedenti, avresti capito tutto sull'operatore di risoluzione dell'ambito in C ++. Spero che questo blog sia informativo e un valore aggiunto per te.

Ora, dopo aver eseguito il programma precedente, avresti compreso l'operatore di risoluzione dell'ambito in C ++. Così siamo giunti alla fine di questo articolo su 'Quicksort in Java'. Se desideri saperne di più, dai un'occhiata al Java Training di Edureka, una società di formazione online affidabile. Il corso di formazione e certificazione Java J2EE e SOA di Edureka è progettato per formarti sia sui concetti di base che avanzati su Java insieme a vari framework Java come Hibernate e Spring.

Hai domande per noi? Per favore, menzionalo nella sezione commenti di questo blog e ti risponderemo il prima possibile.