Maison > développement back-end > C++ > ## Comment l'observation peut-elle affecter l'accès aux variables au sein d'une classe en C ?

## Comment l'observation peut-elle affecter l'accès aux variables au sein d'une classe en C ?

DDD
Libérer: 2024-10-29 07:32:30
original
574 Les gens l'ont consulté

## How can Shadowing Affect Variable Access within a Class in C  ?

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>
Copier après la connexion

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>
Copier après la connexion

Supplémentaire Considérations

  • Il est recommandé d'utiliser des références constantes (const std::string&) pour les valeurs de retour des méthodes d'accès afin d'éviter toute modification involontaire.
  • Utilisation de la syntaxe des fonctions membres au lieu d'un accès direct aux variables (par exemple, m_nomefile versus nomefile()) est préféré pour des raisons de clarté et de lisibilité.
  • L'utilisation d'accesseurs permet de maintenir le code maintenable et réduit les risques de modification directe des variables membres par inadvertance.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal