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