Variables d'ombrage dans C
En programmation orientée objet, l'ombrage se produit lorsqu'une variable définie dans une classe a le même nom qu'une variable dans une lunette extérieure. Cela peut conduire à un comportement inattendu, car la variable intérieure prévoit la variable extérieure.
Problème: ombrage dans une classe
Considérez la définition de classe suivante:
class Measure {
int N;
double measure_set[];
char nomefile[];
double T;
public:
void get( );
void printall( );
double mean( );
double thermal_comp( );
};
Mesure de classe { int n; double mesure_set []; char nomefile []; double t; publique: void get (); void printall (); double moyenne (); double thermal_comp (); };
La méthode GET dans cette classe est destinée à lire les valeurs à partir d'un fichier et à les enregistrer dans le tableau de mesure_set, et à lire une valeur de température et à la stocker dans la variable T cout > nomefile; cout > MEATH_SET [M]; if (f.eof ()) casser; 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 Pour éviter l'observation, vous pouvez soit utiliser différents noms pour les variables ou utiliser l'opérateur de résolution de portée (: :) pour vous référer explicitement à la variable de la classe.
this:
void me mesure :: get () {
cout > nomefile;
cout > MEATH_SET [M];
if (f.eof ()) casser;
M;
}
f.close ();
N = m 1;
cout > température;
T = température;
cout L'utilisation de l'opérateur de résolution de portée pour se référer explicitement à la variable de membre de classe ressemblerait à ceci:
void me mesure :: get () {
cout > nomefile;
cout > MEATH_SET [M];
if (f.eof ()) casser;
M;
}
f.close ();
N = m 1;
cout > this-> t; // Utilisez l'opérateur de résolution de portée pour se référer à la variable de membre de la classe
cout
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3