본문 바로가기

Programming/C++

this pointer

: this 포인터는 클래스에 대한 포인터 값이 아니라, new연산을 통해 객체가 생성될 때 만들어지는 것이므로

  생성된 객체의 고유한 값이다.

  참조의 범위는 protected,private 키워드와 마찬가지로 객체 외부에서는 접근이 불가능 하다.

  this 포인터는 클래스의 모든 멤버(field&method)에 접근을 할 수 있는데, static keyword로 생성된 필드와 메서드는

  접근을 할 수 없다.(정적 메모리는 객체가 생성되기전에 메모리에 잡힘.)

Source:

 

Instruction:

void Date::setMonth( int mn ) {
   month = mn;             // 객체내에서 맴버를 부를 때, 일반적으로 this가 암시적으로 호출된다.
   this->month = mn;     // ->연산을 통해서도 접근이 가능하다.
   (*this).month = mn;
}

 

Apply:

 1. 자기 자신의 호출.

   d->SetMonth(9).SetDay(16).ShowDate();

   자신의 주소를 반환해 다시 맴버를 부를 수가 있다(보통 java에서 이런 스타일을 많이 쓴다.

 

 2. 템플릿

 클래스템플릿은 상속을 하게되면 base클래스의 함수를 호출 하지 못한다는 문제점이 있다.

 이때, this포인터를 이용해 명시적으로 해주면, 이러한 혼란을 막을수 있다.

 http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=51&MAEULNo=20&no=8610&ref=8610

 

 

 

 

 

 

 

 

 

 

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

[C++11] Rvalue Reference #2 - Move Semantics  (0) 2013.01.23
Lvalue Rvalue  (1) 2013.01.21
에러 핸들링(Error Handling)  (0) 2012.10.24
error C2065: 'IDD_Main_DIALOG' : 선언되지 않은 식별자입니다.  (0) 2012.07.25
Bitmap File구조  (0) 2009.09.19