sombreado variables en c
en la programación orientada a objetos, la sombra ocurre cuando una variable definida dentro de una clase tiene el mismo nombre como variable en un ámbito externo. Esto puede conducir a un comportamiento inesperado, ya que la variable interna tiene prioridad sobre la variable externa.
SOMPRESO: SOMBRAR EN UNA CLASE
Considere la siguiente definición de clase:
class Measure {
int N;
double measure_set[];
char nomefile[];
double T;
public:
void get( );
void printall( );
double mean( );
double thermal_comp( );
};
El método GET en esta clase está destinado a leer los valores de un archivo y guardarlos en la matriz de medidas_set, y leer un valor de temperatura y almacenarlo en la variable t. sin embargo, cuando implementa el método GET de la siguiente manera:
void mide :: get () { cout > nomefile; cout > mide_set [m]; if (f.Eof ()) ruptura; M; } F.Close (); N = m 1; cout > t; cout
void Measure::get() {
cout > nomefile;
cout > measure_set[M];
if (f.eof()) break;
M ;
}
f.close();
N = M 1;
cout > T;
cout
solución Esto ocurre porque c permite variables con el mismo nombre a ser diferentes en los diferentes escoces. En este caso, la variable t declarada en el método get sombreado la variable de miembro de la clase t. para evitar la sombra, puede usar diferentes nombres para las variables o usar el operador de resolución de alcance (: :) para consultar explícitamente la variable de miembro de clase. esto:
void mide :: get () {
cout > nomefile;
cout > mide_set [m];
if (f.Eof ()) ruptura;
M;
}
F.Close ();
N = m 1;
cout > temperatura;
T = temperatura;
cout usando el operador de resolución de ámbitos para referirse explícitamente a la variable de miembro de la clase se vería así:
void mide :: get () {
cout > nomefile;
cout > mide_set [m];
if (f.Eof ()) ruptura;
M;
}
F.Close ();
N = m 1;
cout > this-> t; // Use el operador de resolución de alcance para referirse a la variable de miembro de la clase
cout
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