C++
Les portées
Recherche…
Étendue de bloc simple
La portée d'une variable dans un bloc { ... }
commence après la déclaration et se termine à la fin du bloc. S'il existe un bloc imbriqué, le bloc interne peut masquer l'étendue d'une variable déclarée dans le bloc externe.
{
int x = 100;
// ^
// Scope of `x` begins here
//
} // <- Scope of `x` ends here
Si un bloc imbriqué commence dans un bloc externe, une nouvelle variable déclarée portant le même nom que dans la classe externe cache la première.
{
int x = 100;
{
int x = 200;
std::cout << x; // <- Output is 200
}
std::cout << x; // <- Output is 100
}
Variables globales
Pour déclarer une seule instance d'une variable accessible dans différents fichiers sources, il est possible de la définir dans le cadre global avec le mot-clé extern
. Ce mot-clé indique que le compilateur contient une définition de cette variable quelque part dans le code, de sorte qu'il peut être utilisé partout et que toute écriture / lecture sera effectuée dans un seul endroit de la mémoire.
// File my_globals.h:
#ifndef __MY_GLOBALS_H__
#define __MY_GLOBALS_H__
extern int circle_radius; // Promise to the compiler that circle_radius
// will be defined somewhere
#endif
// File foo1.cpp:
#include "my_globals.h"
int circle_radius = 123; // Defining the extern variable
// File main.cpp:
#include "my_globals.h"
#include <iostream>
int main()
{
std::cout << "The radius is: " << circle_radius << "\n";'
return 0;
}
Sortie:
The radius is: 123