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