Sök…
Enkelt blockomfång
Omfattningen av en variabel i ett block { ... }
börjar efter deklarationen och slutar i slutet av blocket. Om det finns ett kapselt block kan det inre blocket dölja räckvidden för en variabel som deklareras i det yttre blocket.
{
int x = 100;
// ^
// Scope of `x` begins here
//
} // <- Scope of `x` ends here
Om ett kapselt block startar i ett yttre block, döljer en ny deklarerad variabel med samma namn som före i den yttre klassen, den första.
{
int x = 100;
{
int x = 200;
std::cout << x; // <- Output is 200
}
std::cout << x; // <- Output is 100
}
Globala variabler
För att förklara en enda instans av en variabel som är tillgänglig i olika källfiler är det möjligt att göra det i det globala omfånget med nyckelord extern
. Detta nyckelord säger kompilatorn att någonstans i koden finns det en definition för denna variabel, så den kan användas överallt och all skrivning / läsning kommer att göras på ett minnesplats.
// 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;
}
Produktion:
The radius is: 123
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow