C ++ Variables globales

C ++ Variables globales
Un emplacement de mémoire doit être identifié, et il est identifié par un nom, appelé variable. La durée d'un programme, de haut en bas, a différentes parties qui font des choses différentes. Certaines parties sont liées mais discontinues par longueur. Les intervalles par la longueur des parties discontinues ont d'autres parties, qui sont liées à d'autres parties.

Une portée est un ensemble de parties connexes où une variable peut être utilisée ou vue. Les portées ont des noms. Une variable globale est une variable qui peut être vue dans chaque portée d'un programme. Une variable globale peut être de types différents. Cet article explique comment une variable globale peut être vue dans les portées communes.

Contenu de l'article

  • Portions connexes
  • Portée globale et variable globale
  • Bloquer la portée et la variable globale
  • Portée de fonction normale et variables globales
  • Portée de classe et variable globale
  • Conclusion

Portions connexes

Considérez le programme suivant:

#inclure
Utilisation de Namespace Std;
int it = 5;
float ft = 2.7;
int fn1 (int impeg = it)

/ * instructions * /
return Integ;

float fn2 (float flt = ft)

/ * instructions * /
retour flt;

int main()

couter << fn1() << endl;
couter << fn2() << endl;
retour 0;

La sortie est:

5
2.7

Les variables «it» et ft sont de types différents. Considérant la variable «it» en premier: «il» est vu dans sa ligne de déclaration. Certaines lignes sont ignorées. Il est ensuite vu dans la signature de fn1 (). Il est également vu dans tout le corps de fn1 (). Certaines lignes et une portion sont ignorées. Il peut alors être vu dans tout le corps de la fonction principale (). En fait, il est vu indirectement, dans la première déclaration de la fonction principale (), via l'appel de fonction fn1 (). Les parties de la variable «it» viennent d'être illustrées.

Considérant la variable FT maintenant: FT est vu dans sa ligne de déclaration. Certaines lignes et une partie (définition FN1) sont ignorées. Une ligne vierge est ignorée. Il est ensuite vu dans la signature de fn2 (). Il est vu dans tout le corps de fn2 (). Il peut alors être vu dans tout le corps de la fonction principale (). En fait, il est vu indirectement, dans la deuxième déclaration de la fonction principale (), via l'appel de fonction fn2 (). Les parties de la variable «ft» viennent d'être illustrées.

Portée globale et variable globale

Lorsqu'un programmeur commence simplement à taper un fichier, c'est la portée globale. Considérez le programme suivant:

#inclure
Utilisation de Namespace Std;
char var = 'e';
int main()

couter <couter <<::var<<'\n';
retour 0;

La sortie est:

E
E

Dans ce programme, la partie ou la portée de la VAR commence à partir du point de déclaration de VAR, se poursuit vers le bas jusqu'à la fin de l'unité de traduction (fichier).

Le corps de la fonction principale est une portée différente à part entière; La portée globale niche la portée de la fonction principale ().

La variable VAR est une variable de portée globale car elle peut être vue partout dans le fichier, à partir d'où il a été déclaré. Il peut être vu dans la portée de la fonction principale (). Dans le programme précédent, «IT» et FT sont des variables de portée globales. Chacun pouvait être vu dans sa ligne de déclaration, dans une portée de fonction et dans la portée de la fonction principale ().

Pour accéder à une variable globale (variable de la portée globale) à partir d'une portée différente, le nom de variable est utilisé directement ou précédé de l'opérateur de résolution de portée, :: comme indiqué dans le programme ci-dessus.

Expliquer le code: tous les programmes en C ++ devraient commencer par au moins les deux premières lignes avec lesquelles ce programme commence par. Les lignes sont:

#inclure
Utilisation de Namespace Std;

La première ligne ici n'est pas une déclaration; c'est une directive, une directive d'inclusion. Il comprend la bibliothèque de flux d'entrée / sortie, qui est responsable de l'envoi de sortie au terminal et de réception des entrées du clavier. Le terminal et le clavier sont appelés la console. Cette bibliothèque s'appelle la bibliothèque ioStream (i.e., la bibliothèque de flux d'entrée / sortie).

La deuxième ligne du programme n'est pas une directive; C'est une déclaration, et ça se termine par un point-virgule. Il indique que tout nom utilisé ci-dessous est de l'espace de noms standard sauf indication contraire. Il pourrait intéresser le lecteur, de savoir que l'espace de noms a une portée; Cependant, cela ne sera pas abordé dans cet article.

La déclaration suivante, en dessous des deux premières lignes, est une déclaration complète de la variable charbon. Dans la fonction principale (), les deux premières lignes impriment la valeur de la même variable au terminal de manière légèrement différente.

Bloquer la portée et la variable globale

Des exemples d'énoncés composés sont les instructions if, while, pour ou commutation. Chacune de ces déclarations composées peut avoir un bloc. Une variable de portée de bloc est une variable définie dans un bloc. Sa portée commence à son point de déclaration et se termine à la fin de son bloc. Une variable globale est normalement définie à l'extérieur et au-dessus de ce bloc. Une variable globale peut être vue à l'extérieur de ce bloc, dans la ligne d'en-tête de ce bloc, et à l'intérieur du bloc. Le programme suivant l'illustre avec un bloc IF:

#inclure
Utilisation de Namespace Std;
int i = 5;
int main()

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

retour 0;

La sortie est:

D'abord je suis: 5
Le second je suis le même: 5

Le bloc IF est un bloc imbriqué à la portée de la fonction principale (), qui est un bloc imbriqué à la portée globale. Ce programme montre que les variables mondiales peuvent être vues dans des blocs imbriqués.

Override dans un bloc imbriqué

Une variable globale peut être remplacée dans un bloc imbriqué. C'est-à-dire qu'une variable globale peut être remplacée par une variable du même nom dans un bloc imbriqué. Dans le programme suivant, je suis remplacé par une autre entité, un flotteur, dans un bloc imbriqué. Et c'est la règle: une variable dans une portée imbriquée avec le même nom que celle en dehors de la portée l'emporte sur cette variable extérieure. Ainsi, pour la portée imbriquée, la variable déclarée en dehors de la portée imbriquée du même nom ne peut pas être vue à l'intérieur de la portée imbriquée; Parce que celui à l'intérieur de la lunette imbriquée a pris sa place à l'intérieur de la portée imbriquée. Celui à l'intérieur de la lunette imbriquée est vu de son point de déclaration à la fin de son bloc. Celui à l'intérieur de la lunette imbriquée n'a pas besoin d'avoir une relation avec celle à l'extérieur de la portée imbriquée. Le programme est:

#inclure
Utilisation de Namespace Std;
int i = 5;
int main()

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

retour 0;

La sortie est:

D'abord je suis: 5
Deuxième je suis différent: 7

La variable remplacée est du même nom et peut toujours être du même type.

Portée de fonction normale et variable globale

Considérez le programme suivant:

#inclure
Utilisation de Namespace Std;
int fn (int impeg);
int i = 5;
int fn (int impeg = i)

/ * instructions * /
return Integ;

int main()

couter << fn() << endl;
retour 0;

La sortie est 5. La région déclarative de la fonction fn (), se compose de la ligne «int fn (int impeg);» de son prototype, la partie de sa définition dans la portée globale et l'instruction d'appel dans le corps de fonction principale. Toutes ces lignes et parties forment la portée de la fonction fn (). La signature de la fonction de fn () fait partie de la portée de la fonction (ainsi que du corps). Maintenant, la variable globale, j'ai été vue dans toutes les lignes ou parties de la fonction FN.

Considérez le programme suivant, avec des classes et des objets instanciés:

#inclure
Utilisation de Namespace Std;
int i = 5;
classe calc
privé:
int pm = i;
public:
void mfn (int Inte = i)

couter << inte << endl;

;
Classe DCLA: public Calc

public:
int dm = i;
;
int main()

Calc obj;
obj.mfn ();
DCLA DOBJ;
couter << dObj.dM << endl;
retour 0;

La sortie est:

5
5

Le programme a une classe de base, Calc et sa classe dérivée, DCLA. La classe de base est publique à la classe dérivée: cela signifie que la classe dérivée peut voir les membres protégés de la classe de base. Ainsi, les parties de la classe, Calc, sont son bloc et le bloc de la classe dérivée, DCLA. C'est-à-dire qu'il y a deux portions pour la portée de la classe, calc. Maintenant, la variable globale, je suis vue dans ces deux parties.

Conclusion

Un emplacement de mémoire doit être identifié, et il est identifié par un nom, appelé variable. La durée d'un programme, de haut en bas, a différentes parties qui font des choses différentes. Certaines parties sont liées mais discontinues par longueur. Les intervalles par la longueur des parties discontinues ont d'autres parties, qui sont liées à d'autres parties.

Une portée est un ensemble de parties connexes où une variable peut être utilisée ou vue. Les portées ont des noms. Une variable globale est une variable qui peut être vue dans chaque portée du programme. Une variable globale peut être de n'importe quel type.