this 포인터

Programming/C++ 2012. 5. 21. 23:35 |

this 포인


: 멤버함수(메소드) 내에서는 this라는 이름의 포인터를 사용할 수 있는데, 이는 객체 자신을 가리키는 용도로 사용되는 포인터이다.(this는 객체를 참조하는 포인터이다)




실행결과를 통해 this는 객체 자신의 주소 값을 의미한다는 사실을 알 수 있다.

이렇듯 this 포인터는 그 주소 값과 자료형이 정해져 있지 않은 포인터이다.



this 포인터의 활용


class ThisClass

{

private:

int num;                        //207이 저장됨.


public:

void ThisFunc(int num)

{

this->num = 207;

num = 105;            //매개변수의 값을 105로 변경함.

}

};


위의 클래스에서 ThisFunc 함수의 매개변수 이름은 num이다. 그런데 이 이름은 멤버변수의 이름과 동일하기 때문에 ThisFunc 함수 내에서의 num은 매개변수 num을 의미하게 된다(지역변수는 매개변수에 의해 가려진다).

따라서 변수의 이름만 참조하는 방법으로는 ThisFunc 함수 내에서 멤버변수 num에 접근이 불가능하다. 그러나 this 포인터를 활용하면 가능하다.


this->num = 207;


위 문장에서 this는 객체를 참조하는 포인터이다. 객체의 포인터를 가지고는 지역변수에 접근이 불가능하다. 따라서 이는 멤버변수 num을 의미하는 것이다. 이러한 특성을 활용하면, 매개변수의 이름을 멤버변수의 이름과 달리하기 위해서 고민할 필요가 없다.





------------------------------------------------------------------------------------------------------------------------------------------




15행: 함수 Adder에서는 선언된 반환형과 반환의 내용을 함께 살펴야 한다. 반환의 내용은 *this인데, 이는 이 문장을 실행하는 객체 자신의 포인터가 아닌, 객체 자신을 반환하겠다는 의미가 된다. 그런데 반환형이 참조형 SelfRef& 으로 선언되었다. 따라서 객체 자신을 참조할 수 있는 '참조의 정보(참조 값)' 가 반환된다.


30행: 객체 obj의 Adder 함수를 호출하였다. 그런데 이 함수는 객체 자신의 참조 값을 반환한다. 즉, 객체 obj의 참조 값을 반환한다. 따라서 참조자 ref는 객체 obj를 참조하게 된다.


35행: 먼저 객체 ref의 Adder 함수가 호출된다. 그런데 Adder 함수는 참조 값을 반환하므로, 반환된 참조 값을 이용해서 다시 ShowTwoNumber 함수를 호출하게 된다. 그리고 마찬가지로 반환되는 참조 값을 이용해서 다시 Adder 함수를 호출하고, 또 이어서 객체의 참조 값을 반환하기 때문에 구성이 가능한 문장이다.


※ 객체가 반환하는 참조 값을 대상으로 다양한 방법으로 멤버함수를 호출한 것.

'Programming > C++' 카테고리의 다른 글

explicit  (0) 2012.05.23
복사 생성자(Copy Constructor)  (0) 2012.05.22
객체 배열 & 객체 포인터 배열  (0) 2012.05.21
생성자 & 소멸자를 이용한 예제  (0) 2012.05.21
생성자를 이용한 예제.  (0) 2012.05.21
Posted by scii
: