C ++ Variables globales

C ++ Variables globales
Se debe identificar una ubicación de memoria, y se identifica con un nombre, llamado variable. La duración de un programa, de arriba a abajo, tiene diferentes porciones que hacen cosas diferentes. Algunas porciones están relacionadas pero discontinuas por longitud. Los intervalos por la longitud de las porciones discontinuas tienen otras porciones, que están relacionadas con otras porciones.

Un alcance es un conjunto de porciones relacionadas donde se puede usar o ver una variable. Los ámbitos tienen nombres. Una variable global es una variable que se puede ver en cada alcance de un programa. Una variable global puede ser de diferentes tipos. Este artículo explica cómo se puede ver una variable global en ámbitos comunes.

Contenido del artículo

  • Porciones relacionadas
  • Alcance global y variable global
  • Bloqueo de alcance y variable global
  • Alcance de la función normal y variables globales
  • Alcance de clase y variable global
  • Conclusión

Porciones relacionadas

Considere el siguiente programa:

#incluir
usando el espacio de nombres STD;
int it = 5;
flotante ft = 2.7;
int fn1 (int Integ = it)

/* declaraciones */
devolver integ;

FLOAT FN2 (FLOAT FLT = ft)

/* declaraciones */
regresar flt;

int main ()

cout << fn1() << endl;
cout << fn2() << endl;
regresar 0;

La salida es:

5
2.7

Las variables "it" y ft son de diferentes tipos. Teniendo en cuenta la variable "it" primero: 'it' se ve en su línea de declaración. Algunas líneas se omiten. Luego se ve en la firma de fn1 (). También se ve en todo el cuerpo de fn1 (). Algunas líneas y una porción se omiten. Luego se puede ver en todo el cuerpo de la función principal (). En realidad, se ve indirectamente, en la primera declaración de la función main (), a través de la llamada de función fn1 (). Las porciones para la variable "it" acaban de ser ilustradas.

Teniendo en cuenta la variable FT ahora: FT se ve en su línea de declaración. Algunas líneas y una porción (definición FN1) se omiten. Se omite una línea en blanco. Luego se ve en la firma de fn2 (). Se ve en todo el cuerpo de fn2 (). Luego se puede ver en todo el cuerpo de la función principal (). En realidad, se ve indirectamente, en la segunda declaración de la función main (), a través de la llamada de función fn2 (). Las porciones para la variable 'ft' se han ilustrado.

Alcance global y variable global

Cuando un programador solo comienza a escribir un archivo, ese es el alcance global. Considere el siguiente programa:

#incluir
usando el espacio de nombres STD;
char var = 'e';
int main ()

cout <cout <<::var<<'\n';
regresar 0;

La salida es:

mi
mi

En este programa, la parte o el alcance para VAR comienza desde el punto de declaración de VAR, continúa hacia abajo hasta el final de la unidad de traducción (archivo).

El cuerpo de la función Main () es un alcance diferente por derecho propio; El alcance global anida el alcance de la función principal ().

La variable var es una variable de alcance global porque se puede ver en todas partes en el archivo, comenzando desde donde se ha declarado. Se puede ver en el alcance de la función principal (). En el programa anterior, "It" y FT son variables de alcance global. Cada uno podría verse en su línea de declaración, en un alcance de función y en el alcance de la función principal ().

Para acceder a una variable global (variable del alcance global) desde un alcance diferente, el nombre de la variable se usa directamente o precede por el operador de resolución de alcance, :: como se muestra en el programa anterior.

Explicando el código: todos los programas en C ++ deben comenzar con al menos las dos primeras líneas con las que comienza este programa. Las líneas son:

#incluir
usando el espacio de nombres STD;

La primera línea aquí no es una declaración; es una directiva, una directiva de inclusión. Incluye la biblioteca de transmisión de entrada/salida, que es responsable de enviar la salida al terminal y recibir la entrada del teclado. El terminal y el teclado juntos se llaman la consola. Esta biblioteca se llama la biblioteca iostream (i.mi., la biblioteca de flujo de entrada/salida).

La segunda línea en el programa no es una directiva; es una declaración, y termina con un punto y coma. Dice que cualquier nombre utilizado a continuación es del espacio de nombres estándar a menos que se indique lo contrario. Puede interesar al lector saber que el espacio de nombres tiene un alcance; Sin embargo, eso no se abordará en este artículo.

La siguiente declaración, debajo de las dos primeras líneas, es una declaración completa de la variable Char. En la función main (), las dos primeras líneas imprimen el valor de la misma variable al terminal de maneras ligeramente diferentes.

Bloqueo de alcance y variable global

Ejemplos de declaraciones compuestas son las declaraciones IF, mientras, para o de cambio. Cada una de estas declaraciones compuestas puede tener un bloque. Una variable de alcance del bloque es una variable definida en un bloque. Su alcance comienza en su punto de declaración y termina al final de su bloqueo. Una variable global se define normalmente fuera y por encima de este bloque. Se puede ver una variable global fuera de este bloque, en la línea de encabezado de este bloque, y dentro del bloque. El siguiente programa ilustra esto con un bloque if:

#incluir
usando el espacio de nombres STD;
int i = 5;
int main ()

cout << "First i is: " << i << endl;
if (i == 5)
cout << "Second i is same: " << i << endl;

regresar 0;

La salida es:

Primero yo es: 5
Segundo yo es el mismo: 5

El bloque if es un bloque anidado para el alcance de la función principal (), que es un bloque anidado para el alcance global. Este programa muestra que las variables globales se pueden ver en bloques anidados.

Anular el bloque anidado

Una variable global puede anularse en un bloque anidado. Es decir, una variable global puede ser reemplazada por una variable del mismo nombre en un bloque anidado. En el siguiente programa, I es reemplazado por otra entidad, un flotador, en un bloque anidado. Y esta es la regla: una variable en un alcance anidado con el mismo nombre que uno fuera del alcance anula esa variable externa. Entonces, para el alcance anidado, la variable declarada fuera del alcance anidado con el mismo nombre no se puede ver dentro del alcance anidado; Porque el dentro del alcance anidado ha ocupado su lugar dentro del alcance anidado. El que está dentro del alcance anidado se ve desde su punto de declaración hasta el final de su bloqueo. El que está dentro del alcance anidado no necesita tener ninguna relación con el que está fuera del alcance anidado. El programa es:

#incluir
usando el espacio de nombres STD;
int i = 5;
int main ()

cout << "First i is: " << i << endl;
if (i == 5)
flotante i = 7.0;
cout << "Second i is different: " << i << endl;

regresar 0;

La salida es:

Primero yo es: 5
Segundo es diferente: 7

La variable anulada es del mismo nombre y aún puede ser del mismo tipo.

Alcance de la función normal y variable global

Considere el siguiente programa:

#incluir
usando el espacio de nombres STD;
int fn (int Integ);
int i = 5;
int fn (int Integ = i)

/* declaraciones */
devolver integ;

int main ()

cout << fn() << endl;
regresar 0;

La salida es 5. La región declarativa de la función fn (), consiste en la línea "int fn (int Integ);" de su prototipo, la parte de su definición en el alcance global y la declaración de llamadas en el cuerpo de la función principal. Todas estas líneas y porciones forman el alcance de la función fn (). La firma de función de fn () es parte del alcance de la función (así como del cuerpo). Ahora, la variable global, me han visto en todas las líneas o partes de la función FN.

Considere el siguiente programa, con clases y objetos instanciados:

#incluir
usando el espacio de nombres STD;
int i = 5;
clase calc
privado:
int pM = i;
público:
void mfn (int Inte = i)

cout << inte << endl;

;
Clase DCLA: Public Calc

público:
int dm = i;
;
int main ()

Calc obj;
obj.nación más favorecida();
Dcla dobj;
cout << dObj.dM << endl;
regresar 0;

La salida es:

5
5

El programa tiene una clase base, Calc, y su clase derivada, DCLA. La clase base es pública para la clase derivada: esto significa que la clase derivada puede ver a los miembros protegidos de la clase base. Entonces, las porciones para la clase, Calc, son su bloque y el bloque de la clase derivada, DCLA. Es decir, hay dos porciones para el alcance de la clase, Calc. Ahora, la variable global, se me ve en estas dos porciones.

Conclusión

Se debe identificar una ubicación de memoria, y se identifica con un nombre, llamado variable. La duración de un programa, de arriba a abajo, tiene diferentes porciones que hacen cosas diferentes. Algunas porciones están relacionadas pero discontinuas por longitud. Los intervalos por la longitud de las porciones discontinuas tienen otras porciones, que están relacionadas con otras porciones.

Un alcance es un conjunto de porciones relacionadas donde se puede usar o ver una variable. Los ámbitos tienen nombres. Una variable global es una variable que se puede ver en cada alcance del programa. Una variable global puede ser de cualquier tipo.