[디딤돌 C++] 19. 특별한 멤버 this

개체의 메서드에서는 특별한 키워드 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는 클래스 내부에서만 접근할 수 있으므로 주의하세요.