"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo evitar el sombreado de variables en los métodos de clase de C++?

¿Cómo evitar el sombreado de variables en los métodos de clase de C++?

Publicado el 2024-12-22
Navegar:937

How to Avoid Shadowing Variables in C   Class Methods?

Sombreado de variables en C

Al definir variables dentro de clases, C permite que variables con el mismo nombre se utilicen en diferentes ámbitos. Este fenómeno, conocido como "variables de seguimiento", puede generar confusión y comportamiento inesperado.

En la definición de clase dada:

class Measure {
int N;
double measure_set[];
char nomefile[];
double T;
};

la variable miembro T será sombreada por la variable T declarada en el método get:

void Measure::get() {
int M=0;
int nmax=50;

// ...

cout > T;
cout 

Como resultado, cualquier modificación realizada en T dentro del método get en realidad afectará a la variable sombreada Measure_set[0]. Para rectificar este problema, considere usar nombres de variables distintos o utilizar prefijos de miembros de clase para evitar colisiones de nombres:

Nombres de variables distintos:

class Measure {
int N;
double measure_set[];
char nomefile[];
double temperature; // Rename variable
};

void Measure::get() {
// ...

cout > temperature;
cout 

Prefijos de miembros de clase:

class Measure {
int m_N;
double m_measureSet[];
std::string m_nomefile;
double m_T;
};

void Measure::get() {
// ...

cout > m_T;
cout 

Al anteponer a las variables miembro el nombre de la clase o un identificador específico, puede evitar colisiones de nombres y garantizar que las variables ocultas no interfieran con los miembros de la clase.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3