C++ this 포인터
1. 개요
1.1 문서 개요
이 문서는 C++에서 사용되는 this
포인터에 관해 기록하는 문서입니다. 객체 지향 프로그래밍에서 클래스의 멤버 함수 내부에서 객체 자기 자신을 참조할 때 사용되는 this
포인터의 정의, 활용 방식, 그리고 실질적인 사용 예에 대해 설명합니다.
2. 내용
2.1 this 포인터의 정의와 특성
2.1.1 정의
this
포인터는 클래스의 멤버 함수 내에서 암시적으로 사용 가능한 포인터로, 해당 함수를 호출한 객체 자신의 주소를 가리킵니다. 이 포인터는 모든 비정적 멤버 함수에 자동으로 전달되며, 객체의 멤버에 접근하거나 자기 자신을 반환할 때 활용됩니다.
2.1.2 특성
this
는 포인터이므로*this
형태로 객체 자신을 값 형태로 사용할 수 있습니다.this
는 정적(static) 멤버 함수에서는 사용 불가능합니다.this
포인터의 타입은클래스이름* const
입니다.
2.2 this 포인터의 주요 활용
2.2.1 멤버 이름과 지역 변수의 충돌 해결
class Sample {
private:
int value;
public:
void setValue(int value) {
this->value = value; // this를 사용하여 멤버 변수와 구분
}
};
2.2.2 함수 체이닝(function chaining)
class Sample {
private:
int x;
public:
Sample& setX(int x) {
this->x = x;
return *this;
}
};
위 예제는 멤버 함수를 연속 호출할 수 있도록 *this
를 참조 형태로 반환합니다.
2.2.3 자기 자신을 인자로 넘기기
class Sample {
public:
void compare(Sample* other);
void callCompare() {
compare(this); // 자기 자신을 인자로 전달
}
};
3. 마무리
this
포인터는 객체 지향 프로그래밍에서 객체 자기 자신을 참조하거나 멤버 충돌을 해결할 때 유용하게 사용됩니다. 주로 멤버 변수와의 이름 충돌 방지, 체이닝 기법, 자기 자신 전달 등의 용도로 사용되며, 정적 멤버 함수에서는 사용이 불가합니다.