Heim >Backend-Entwicklung >C++ >## Wie kann sich Shadowing auf den Variablenzugriff innerhalb einer Klasse in C auswirken?
Schattierung von Variablen in Klassen: Ein Rätsel
Diese Untersuchung konzentriert sich auf das Verhalten von Variablen, die innerhalb von Klassen definiert sind. Betrachten Sie die folgende Klasse mit dem Namen Measure:
<code class="c++">class Measure { int N; double measure_set[]; char nomefile[]; double T; // ... };</code>
Das Ziel besteht darin, eine Get-Methode zu implementieren, die Daten aus einer .dat-Datei in das Measure_set-Array und Benutzereingaben in die T-Variable liest. Die bereitgestellte Implementierung scheint jedoch den T-Wert in Measure_set[0] zu speichern.
Schattenbildung verstehen
In C ist es möglich, Variablen mit demselben Namen zu deklarieren in unterschiedlichen Bereichen. Dies wird als Abschattung bezeichnet. Der Compiler ordnet jede Variable ihrem jeweiligen Bereich zu, und innerhalb dieses Bereichs hat die lokale Definition der Variablen Vorrang vor allen anderen Deklarationen mit demselben Namen.
Im bereitgestellten Code ist die T-Variable als Mitglied definiert Variable der Measure-Klasse und als lokale Variable innerhalb der get-Methode. Beim Versuch, die T-Mitgliedsvariable innerhalb der Methode abzurufen, greift sie stattdessen auf die lokale Variable Debido zum Shadowing zu.
Shadowing vermeiden
Um dieses Problem zu beheben, ist es notwendig um eine Schattenbildung zu vermeiden, indem eindeutige Namen für Variablen in unterschiedlichen Bereichen verwendet werden. Eine gängige Konvention besteht darin, Mitgliedsvariablen einen entsprechenden Bezeichner voranzustellen, beispielsweise „m_“ oder „this_“. Dadurch wird sichergestellt, dass sie sich von lokalen Variablen mit demselben Namen unterscheiden.
Zum Beispiel verwendet der folgende geänderte Code das Präfix „_m“ für Mitgliedsvariablen:
<code class="c++">void Measure::get() { // ... cout << "Insert temperature:" << endl; cin >> m_T; // ... }</code>
Zusätzlich Überlegungen
Das obige ist der detaillierte Inhalt von## Wie kann sich Shadowing auf den Variablenzugriff innerhalb einer Klasse in C auswirken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!