개체의 메서드에서는 특별한 키워드 this를 사용할 수 있어요. this는 컴파일러에 의해 자동으로 캡슐화하는 정적 멤버입니다. this 키워드는 개체 자신을 나타내며 클래스 형식의 포인터입니다.
this 키워드를 통해 접근할 수 있는 것은 클래스에 캡슐화한 멤버입니다. 따라서 멤버 필드와 지역 변수와 같은 이름이어도 this 키워드로 접근하면 멤버 필드를 접근합니다. 참고로 전역 변수와 지역 변수, 멤버 필드의 이름이 같을 때 전역 변수는 스코프 연산자(::)와 함께 사용할 수 있고 멤버 필드는 this 키워드와 함께 사용할 수 있습니다. 지역 변수는 변수명만 가지고 접근할 수 있죠.
물론 이름이 다르다면 스코프 연산자(::)나 this를 굳이 사용할 필요는 없어요.
//같은 이름의 전역 변수, 지역 변수, 멤버 필드 접근하기 #include <iostream> using namespace std; int num=1; class Demo { int num; public: Demo(int num) { this->num = num; } void View(int num)const { cout<<"전역 변수 num:"<<::num<<endl;//스코프 연산자(::)와 변수명 cout<<"멤버 필드 num:"<<this->num<<endl; //this->멤버 필드명 cout<<"지역 변수 num:"<<num<<endl; } }; int main() { Demo *demo = new Demo(2); demo->View(3); delete demo; return 0; }
▷실행 결과
전역 변수 num:1
멤버 필드 num:2
지역 변수 num:3
this는 클래스 내부에서만 접근할 수 있으므로 주의하세요.