언어 자료구조 알고리즘/디딤돌 C++

19. 특별한 멤버 this

언제나휴일 2016. 1. 27. 19:50
반응형
안녕하세요. 언제나 휴일, 언휴예요.
이번에는 멤버 메서드에서 개체 자신을 의미하는 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는 클래스 내부에서만 접근할 수 있으므로 주의하세요.

반응형