Zoeken…
Eenvoudig blokbereik
Het bereik van een variabele in een blok { ... }
, begint na declaratie en eindigt aan het einde van het blok. Als er een genest blok is, kan het binnenste blok het bereik verbergen van een variabele die in het buitenste blok wordt gedeclareerd.
{
int x = 100;
// ^
// Scope of `x` begins here
//
} // <- Scope of `x` ends here
Als een genest blok binnen een buitenste blok begint, verbergt een nieuwe gedeclareerde variabele met dezelfde naam die ervoor in de buitenste klasse staat, de eerste.
{
int x = 100;
{
int x = 200;
std::cout << x; // <- Output is 200
}
std::cout << x; // <- Output is 100
}
Globale variabelen
Om een enkele instantie van een variabele aan te geven die toegankelijk is in verschillende bronbestanden, is het mogelijk om deze in de globale scope te maken met trefwoord extern
. Dit sleutelwoord zegt de compiler dat er ergens in de code een definitie voor deze variabele is, dus deze kan overal worden gebruikt en al het schrijven / lezen gebeurt op één geheugenplaats.
// 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;
}
Output:
The radius is: 123