Observation des variables dans les classes : une énigme
Cette enquête se concentre sur le comportement des variables définies dans les classes. Considérons la classe suivante nommée Measure :
<code class="c++">class Measure { int N; double measure_set[]; char nomefile[]; double T; // ... };</code>
L'objectif est d'implémenter une méthode get qui lit les données d'un fichier .dat dans le tableau Measure_set et les entrées de l'utilisateur dans la variable T. Cependant, l'implémentation fournie semble stocker la valeur T dans Measure_set[0].
Comprendre l'observation
En C , il est possible de déclarer des variables avec le même nom dans des portées différentes. C’est ce qu’on appelle l’observation. Le compilateur associe chaque variable à sa portée respective, et dans cette portée, la définition locale de la variable a priorité sur toute autre déclaration portant le même nom.
Dans le code fourni, la variable T est définie à la fois comme membre variable de la classe Measure et comme variable locale dans la méthode get. Lorsque vous tentez de récupérer la variable membre T dans la méthode, elle accède à la place à la variable locale Debido pour l'observation.
Éviter l'observation
Pour résoudre ce problème, il est nécessaire pour éviter l'observation en utilisant des noms uniques pour les variables dans différentes portées. Une convention courante consiste à préfixer les variables membres avec un identifiant approprié, tel que « m_ » ou « this_ ». Cela garantit qu'elles restent distinctes des variables locales portant le même nom.
Par exemple, le code modifié suivant utilise le préfixe "_m" pour les variables membres :
<code class="c++">void Measure::get() { // ... cout << "Insert temperature:" << endl; cin >> m_T; // ... }</code>
Supplémentaire Considérations
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!