"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C++ 클래스 메서드에서 변수 숨김을 방지하는 방법은 무엇입니까?

C++ 클래스 메서드에서 변수 숨김을 방지하는 방법은 무엇입니까?

2024년 12월 22일에 게시됨
검색:854

How to Avoid Shadowing Variables in C   Class Methods?

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