this 포인터의 다양한 사용 용도 가 있겠지만,
클래스 내부의 멤버 변수에 접근하기 위한 필요성이 있을 때 this 포인터를 먼저 떠올리길 바란다.

일반적으로 아래와 같은 코드에서
멤버변수와 지역변수(매개변수도 일종의 지역변수이므로) aaa 가 존재하고
멤버변수 aaa에 생성자의 매개변수 aaa를 대입했으면 하고 프로그래밍 하는 경우에
aaa = aaa;
라고 쓰면 절대 멤버변수에 값을 쓸 수가 없다. (지역변수가 멤버변수보다 우선하므로)
그래서 this 포인터를 사용하여 아래와 같이
this->aaa = aaa;
로 사용하면 원하는 결과가 가능하다.

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

class data {
    int aaa;
    int bbb;

public:
    data(int aaa, int bbb) {
        //aaa=aaa;
        this->aaa=aaa;

        //bbb=bbb;
        this->bbb=bbb;
    }
    void printAll() {
        cout<<aaa<<" "<<bbb<<endl;
    }
};

int main(void) {
    data d(100, 200);
    d.printAll();

    return 0;
}

당연히 main()에서 d.printAll() 에 의한 출력은 “100 200” 이 된다.

by sminchoi 2008. 8. 13. 10:23