¿Cómo utilizar mejor el operador de resolución de alcance en C ++?



Este artículo le presentará el operador de resolución de alcance en C ++ y le hará un seguimiento de la demostración programática para una comprensión detallada.

Como sugiere el nombre, el operador de resolución de alcance se usa para obtener los nombres ocultos debido a los alcances variables para que aún pueda usarlos. En este artículo entenderemos cómo usar el operador de resolución de alcance en C ++ y cuáles son sus diferentes propósitos de un .

En C ++, el operador de resolución de alcance es ::. El operador de resolución de alcance en C ++ se puede utilizar para:





Ahora entendamos cada uno de los propósitos uno por uno con la ayuda de ejemplos.

Accediendo a una variable global cuando hay una variable local con mismo nombre

Puede usar el operador de resolución de alcance para acceder a la variable global si tiene una variable local con el mismo nombre. En el siguiente ejemplo, tenemos dos variables, ambas con el nombre num con alcance global y local. Entonces, para acceder a la variable num global en la clase principal, debe usar el operador de resolución de alcance (es decir, :: num).



Ejemplo

#include usando el espacio de nombres std int num = 30 // Inicializando una variable global num int main () {int num = 10 // Inicializando la variable local num cout<< 'Value of global num is ' << ::num cout << 'nValue of local num is ' << num return 0 } 

Salida

Continuando con este artículo sobre el operador de resolución de alcance en C ++



Definición de una función fuera de una clase

Si declara una función en una clase y luego desea definirla fuera de la clase, puede hacerlo mediante el operador de resolución de alcance. En el siguiente ejemplo, declaramos una función Speed ​​en Class Bike. Más adelante definiremos la función en la clase principal usando el operador de resolución de alcance.

Ejemplo

#incluir usando el espacio de nombres std class Bike {public: // Solo la declaración de función void Speed ​​()} // Definiendo la función Speed ​​fuera de la clase Bike usando :: void Bike :: Speed ​​() {cout<< 'Speed of Bike is 90 KMPH' } int main() { Bike bike bike.Speed() return 0 } 

Salida

Continuando con este artículo sobre el operador de resolución de alcance en C ++

Accediendo a la estática de una clase variables

Puede acceder a la variable estática de la clase utilizando el nombre de la clase y el operador de resolución de alcance (es decir, nombre de clase :: variable_estática). Puede ver en el siguiente ejemplo que estamos declarando una variable estática en la clase. Estamos definiendo la variable fuera de la clase usando el operador de resolución de alcance. Luego estamos accediendo a él usando el operador de resolución de alcance y nombre de clase.

Ejemplo

#include usando el espacio de nombres std class Try {static int num1 public: static int num2 // El parámetro local oculta el miembro de la clase // Se puede acceder al miembro de la clase usando :: void function (int num1) {// Se puede acceder a la variable estática num1 usando :: // a pesar de la variable local 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 } 

Salida

Continuando con este artículo sobre el operador de resolución de alcance en C ++

Refiriéndose a una clase dentro de otra clase

Puede crear clases anidadas con los mismos nombres de variable en ambas clases. Puede acceder a ambas variables utilizando el operador de resolución de alcance. Para la variable de clase interna, debe usar Outer_Class :: Inner_Class :: variable.

Ejemplo

#incluir el uso del espacio de nombres 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}

Continuando con este artículo sobre el operador de resolución de alcance en C ++

En caso de herencia múltiple

Si tiene dos clases principales con los mismos nombres de variable y las hereda en la clase secundaria, puede usar el operador de resolución de alcance con el nombre de la clase para acceder a las variables individuales.

cómo instalar hadoop en ubuntu

En el siguiente ejemplo, estamos creando dos clases principales Parent1 y Parent2, y ambas tienen la variable num. Cuando heredamos ambos en la clase Child, podemos acceder a ambas variables num usando el nombre de clase y el operador de resolución de alcance.

Ejemplo

#incluir usando el espacio de nombres 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 } 

Salida

Continuando con este artículo sobre el operador de resolución de alcance en C ++

Espacio de nombres

Supongamos que tenemos dos espacios de nombres y ambos contienen clases con el mismo nombre. Entonces, para evitar cualquier conflicto, podemos usar el nombre del espacio de nombres con el operador de resolución de alcance. En el siguiente ejemplo estamos usando std :: cout .

Ejemplo

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

Salida

Ahora, después de pasar por los programas anteriores, habrá entendido todo sobre el operador de resolución de alcance en C ++. Espero que este blog sea informativo y de valor agregado para ti.

Ahora, después de ejecutar el programa anterior, habría entendido el operador de resolución de alcance en C ++. Por lo tanto, hemos llegado al final de este artículo sobre 'Clasificación rápida en Java'. Si desea obtener más información, consulte la capacitación en Java de Edureka, una empresa confiable de aprendizaje en línea. El curso de certificación y capacitación Java J2EE y SOA de Edureka está diseñado para capacitarlo en conceptos básicos y avanzados de Java junto con varios marcos de Java como Hibernate y Spring.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este blog y nos pondremos en contacto con usted lo antes posible.