C 中的阴影变量
在类中定义变量时,C 允许在不同作用域中使用具有相同名称的变量。这种现象称为“影子变量”,可能会导致混乱和意外行为。
在给定的类定义中:
class Measure {
int N;
double measure_set[];
char nomefile[];
double T;
};
成员变量 T 将被 get 方法中声明的变量 T 遮蔽:
void Measure::get() {
int M=0;
int nmax=50;
// ...
cout > T;
cout 因此,在 get 方法中对 T 进行的任何修改实际上都会影响隐藏变量measure_set[0]。要纠正此问题,请考虑使用不同的变量名称或利用类成员前缀来避免名称冲突:
不同的变量名称:
class Measure {
int N;
double measure_set[];
char nomefile[];
double temperature; // Rename variable
};
void Measure::get() {
// ...
cout > temperature;
cout 类成员前缀:
class Measure {
int m_N;
double m_measureSet[];
std::string m_nomefile;
double m_T;
};
void Measure::get() {
// ...
cout > m_T;
cout 通过在成员变量前添加类名或特定标识符,可以避免名称冲突并确保隐藏变量不会干扰类成员。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3