„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie vermeide ich das Shadowing von Variablen in C++-Klassenmethoden?

Wie vermeide ich das Shadowing von Variablen in C++-Klassenmethoden?

Veröffentlicht am 22.12.2024
Durchsuche:287

How to Avoid Shadowing Variables in C   Class Methods?

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.

Neuestes Tutorial Mehr>

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