Sombrando variáveis em C
Ao definir variáveis dentro de classes, C permite que variáveis com o mesmo nome sejam usadas em escopos diferentes. Esse fenômeno, conhecido como "variáveis de sombra", pode causar confusão e comportamento inesperado.
Na definição de classe fornecida:
class Measure {
int N;
double measure_set[];
char nomefile[];
double T;
};
a variável membro T será sombreada pela variável T declarada no método get:
void Measure::get() {
int M=0;
int nmax=50;
// ...
cout > T;
cout Como resultado, quaisquer modificações feitas em T dentro do método get afetarão, na verdade, a variável sombreada Measure_set[0]. Para corrigir esse problema, considere usar nomes de variáveis distintos ou utilizar prefixos de membros de classe para evitar colisões de nomes:
Nomes de variáveis distintos:
class Measure {
int N;
double measure_set[];
char nomefile[];
double temperature; // Rename variable
};
void Measure::get() {
// ...
cout > temperature;
cout Prefixos de membros de classe:
class Measure {
int m_N;
double m_measureSet[];
std::string m_nomefile;
double m_T;
};
void Measure::get() {
// ...
cout > m_T;
cout Ao prefixar as variáveis-membro com o nome da classe ou um identificador específico, você pode evitar colisões de nomes e garantir que as variáveis sombreadas não interfiram nos membros da classe.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3