본문 바로가기
C++

This 포인터

by 상레알 2009. 1. 6.

멤버 함수 내에서는 this라는 이름의 포인터를 사용할 수 있다.

뭐..열강 예제를 보면 알수 잇겟지만

포인터의 값과 포인터가 가르키는 객체가 리턴한 this의 출력 결과도 같음을 알수 잇다. 즉..this는 자기 자신을 가르키는 (참조하는 ) 용도로 사용되는 포인터이다 그래서 자기 참조 포인터 라 한다.

리턴 타입은...ex) person*  <- 이런식이다..

그래서 this는 그 값이 일정하지가 않다. 만약 0x30번지에 할당된 객체의 멤버 함수 내에서 this를 사용한다면 이 순간은 0x30번지를 의미하는 포인터가 된다.

this포인터가 유용하게 사용되는 상황은 연산자 오버로딩에서 연출하게 될것이라고한다...일단은
밑의 소스를 볼것...ㅋㅋ

#include <iostream>
using namespace std;

class person{
 int a;
 int b;
public:
 person(int a,int b)
 {
  this->a = a;
  this->b = b;
 }
 void print1(){
  cout<<a<<" "<<b<<endl;
 }
};
int main()
{
 person s(10,20);
  s.print1();
 return 0;
}


생성자클래스를 보면 대입연산자로 왼쪽a와 오른쪽 a가 대입하게되는 대 this포인터가 없을때는 어떠한 변수이건 간에

지역변수(매개변수도 일종의 지역변수이다)보다 우선시 될 수는 없기 떄문이다. 즉 생성자 내에서 a라는 이름의 변수를 선언한 관계로 새엉자 내에서는 더이상 a라는 이름의 멤버변수에 접근할수가 없다

하지만 this포인터를 사용함으로써 이것을 위에 예제 처럼 가능하게 할수 잇다 this는 객체의 주소 값을 가리키는 포인터이다

그래서 위 예제에서 this는 멤버변수로 접근을 의미하게 된다...

객체주소값을 가지고 지역변수 (매개변수포함) 접근이 가능??? 불가능한 일이다....