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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow