멤버 함수 내에서는 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는 멤버변수로 접근을 의미하게 된다...
객체주소값을 가지고 지역변수 (매개변수포함) 접근이 가능??? 불가능한 일이다....
'C++' 카테고리의 다른 글
클래스와 Static (0) | 2009.01.15 |
---|---|
클래스와 const (0) | 2009.01.14 |
복사 생성자가 호출되는 시점 (0) | 2009.01.08 |
복사생성자 (0) | 2009.01.08 |
const 함수 (0) | 2009.01.06 |
friend 선언 (0) | 2009.01.06 |
열혈강의 연습문제 4-2 /생성자/소멸자/객체 포인터 동적 할당/해체/문자입력받아서 순서대로 출력 (0) | 2009.01.06 |
malloc 함수와 new 연산자의 차이 (0) | 2009.01.05 |
소멸자의 특징과 필요성 (0) | 2008.12.30 |
생성자와 객체의 생성 과정 (0) | 2008.12.30 |