728x90
객체지향 프로그래밍에서 객체는 데이터와 해당 데이터를 조작하는 함수들을 함께 묶은 것입니다.
C++에서 this 포인터는 이러한 객체 내에서 현재 객체를 가리키는 특별한 포인터입니다.
이 글에서는 this 포인터의 역할과 사용법에 대해 알아보겠습니다.
this 포인터란
this 포인터는 클래스의 멤버 함수 내에서 사용되는 포인터로,
해당 함수를 호출한 객체의 주소를 가리킵니다.
즉, 현재 실행 중인 객체에 대한 포인터 역할을 합니다.
this 포인터를 사용하여 객체의 멤버 변수와 멤버 함수에 접근할 수 있습니다.
사용법
this 포인터는 클래스의 멤버 함수 내에서 암시적으로 사용됩니다.
멤버 함수가 호출될 때마다 해당 함수를 호출한 객체의 주소가 this 포인터에 자동으로 전달됩니다.
이를 통해 멤버 함수 내에서 객체의 데이터에 접근할 수 있습니다.
class MyClass {
public:
void printAddress() {
std::cout << "객체의 주소: " << this << std::endl;
}
};
int main() {
MyClass obj1, obj2;
obj1.printAddress(); // obj1의 주소 출력
obj2.printAddress(); // obj2의 주소 출력
}
활용 방법
this 포인터는 멤버 함수 내에서 현재 객체를 가리키므로,
객체 자신을 반환하거나 자신의 멤버 변수에 접근하는 데 사용될 수 있습니다.
예를 들어, 객체의 자기 참조를 반환하는 함수를 구현할 때 유용하게 사용됩니다.
class MyClass {
private:
int data;
public:
MyClass(int d) : data(d) {}
MyClass* getThis() {
return this; // 객체의 주소 반환
}
int getData() {
return data;
}
void setData(int d) {
this->data = d; // 객체의 멤버 변수에 접근
}
};
int main() {
MyClass obj(10);
std::cout << "객체의 데이터: " << obj.getData() << std::endl;
MyClass* ptr = obj.getThis();
ptr->setData(20);
std::cout << "객체의 수정된 데이터: " << obj.getData() << std::endl;
}
주의사항
- this 포인터는 멤버 함수 내에서만 사용할 수 있습니다.
정적 멤버 함수나 전역 함수에서는 사용할 수 없습니다. - this 포인터를 사용할 때 널 체크를 해야 합니다.
객체가 유효한지 확인하지 않고 this 포인터를 사용하면 예기치 않은 동작을 일으킬 수 있습니다.
마무리
this 포인터는 C++의 객체지향 프로그래밍에서 매우 중요한 역할을 합니다.
객체의 자기 참조를 통해 객체 간의 상호 작용을 가능하게 합니다.
제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀
728x90
반응형
'Application > 기초' 카테고리의 다른 글
[기초] C++ 반복자 (Iterator) (0) | 2024.05.03 |
---|---|
[기초] C++ 컨테이너 (Containers) (0) | 2024.05.02 |
[기초] C++ 동기화 기법 (Mutex와 Semaphore) (0) | 2024.04.30 |
[기초] C++ 멀티스레딩 (Thread) (0) | 2024.04.29 |
[기초] C++ 템플릿 (Templates) (2) | 2024.04.28 |