Schatten von Variablen in C
Bei der Definition von Variablen innerhalb von Klassen ermöglicht C die Verwendung von Variablen mit demselben Namen in verschiedenen Bereichen. Dieses als „Shadowing-Variablen“ bekannte Phänomen kann zu Verwirrung und unerwartetem Verhalten führen.
In der angegebenen Klassendefinition:
class Measure {
int N;
double measure_set[];
char nomefile[];
double T;
};
Die Mitgliedsvariable T wird durch die in der Get-Methode deklarierte Variable T überschattet:
void Measure::get() {
int M=0;
int nmax=50;
// ...
cout > T;
cout Daher wirken sich alle an T innerhalb der get-Methode vorgenommenen Änderungen tatsächlich auf die schattierte Variable Measure_set[0] aus. Um dieses Problem zu beheben, sollten Sie in Betracht ziehen, unterschiedliche Variablennamen oder Präfixe für Klassenmitglieder zu verwenden, um Namenskollisionen zu vermeiden:
Eindeutige Variablennamen:
class Measure {
int N;
double measure_set[];
char nomefile[];
double temperature; // Rename variable
};
void Measure::get() {
// ...
cout > temperature;
cout Präfixe für Klassenmitglieder:
class Measure {
int m_N;
double m_measureSet[];
std::string m_nomefile;
double m_T;
};
void Measure::get() {
// ...
cout > m_T;
cout Indem Sie Mitgliedsvariablen den Klassennamen oder einen bestimmten Bezeichner voranstellen, können Sie Namenskollisionen vermeiden und sicherstellen, dass schattierte Variablen nicht mit Klassenmitgliedern in Konflikt geraten.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3