글
[C++] this 포인터 사용하기
Programming/C++ Language
2010. 7. 31. 18:56
연속적인 함수 호출을 위해 this 포인터를 사용해 보도록 하자.
SetHour, SetMinute, SetSecond 라는 함수가 있다고 했을 때, 3번의 각각의 호출이 필요하다.
이때, this 포인터를 반환하는 즉, this 참조 반환을 이용하면 연속적으로 호출이 가능하다.
아래의 예문을 살펴보자.
CTimes& CTimes::SetHour(int nHour)
{
hour = nHour;
return *this;
}
CTimes& CTimes::SetMinute( int m )
{
minute = m;
return *this;
}
CTimes& CTimes::SetSecond( int s )
{
second = s;
return *this;
}
위와 같이 Set 함수에 *this 를 반환을 하게 되면, 호출 하는 쪽에서 *this를 호출하여 연속적으로 아래와 같이 호출 할 수 있게 된다.
특별히 성능이 좋아진다거나 그런 것은 없지만, 이를 알고 있다면 코드가 간단해서 보기 쉽지 않을까 생각한다. 앞으로 잘 이용하면 좋은 문법이 될 것 같다.
SetHour, SetMinute, SetSecond 라는 함수가 있다고 했을 때, 3번의 각각의 호출이 필요하다.
이때, this 포인터를 반환하는 즉, this 참조 반환을 이용하면 연속적으로 호출이 가능하다.
아래의 예문을 살펴보자.
CTimes& CTimes::SetHour(int nHour)
{
hour = nHour;
return *this;
}
CTimes& CTimes::SetMinute( int m )
{
minute = m;
return *this;
}
CTimes& CTimes::SetSecond( int s )
{
second = s;
return *this;
}
위와 같이 Set 함수에 *this 를 반환을 하게 되면, 호출 하는 쪽에서 *this를 호출하여 연속적으로 아래와 같이 호출 할 수 있게 된다.
CTimes time;
time.SetHour(10).SetMinute(20).SetSecond(30);
time.Print();
time.SetHour(10).SetMinute(20).SetSecond(30);
time.Print();
특별히 성능이 좋아진다거나 그런 것은 없지만, 이를 알고 있다면 코드가 간단해서 보기 쉽지 않을까 생각한다. 앞으로 잘 이용하면 좋은 문법이 될 것 같다.
'Programming > C++ Language' 카테고리의 다른 글
Unique Pointer (0) | 2014.03.03 |
---|---|
[C++] 동적바인딩( Dynamic binding ) (0) | 2011.01.03 |
[C++] 참조 변수 (1) | 2010.07.31 |
[C++] 참조 반환 (0) | 2010.07.31 |
[C++] 클래스 I (0) | 2010.07.21 |