C++ Kurs

Wenn fertig, bitte Fenster schließen

Verdeckung von Variablen

Obwohl es in der OOP fast ein Vergehen ist, aus Memberfunktionen heraus auf globale Daten zuzugreifen, so ist dieses jedoch generell nicht durch den C++ Standard verboten.

Hierbei können wieder zwei Fälle auftreten:

1. Gibt es innerhalb der Klasse kein Member mit dem gleichen Namens wie das globale Datum, so reicht die alleinige Angabe des Variablennamens.


// Globale Variable
int value;
// Klassendefinition
struct anyClass
{
   ... // kein Member mit dem Namen value
   void DoAny()
   {
      value = 10; // globale Variable setzen
   ...
   }
};

2. Enthält dagegen die Klasse eine Eigenschaft mit dem gleichen Namen wie das globale Datum, so verdeckt zunächst diese Eigenschaft das globale Datum. Um trotzdem auf das globale Datum zugreifen zu können, wird vor dem Namen wiederum der globale Zugriffsoperator :: (zwei Doppelpunkte) gestellt.


// Globale Variable
int value;
// Klassendefinition
struct anyClass
{
   double value;    // Member mit gleichem Namen wie globale Variable
   void DoAny()
   {
      value = 1.2   // Member setzen
      ::value = 10; // globale Variable setzen
   ...
   }
};

Die Datentypen spielen hierbei keine Rolle. Entscheidend ist allein der Name.