What is "this"?

niraaah·2023년 4월 12일
2

혼자하는 스터디

목록 보기
8/25

this

:this 포인터는 모든 멤버 함수에 추가되는 숨겨진 매개 변수. 호출된 객체의 주소를 가리키는 상수 포인터. (따라서 포인터 자체가 다른 것을 가리키도록 할 수 없음)

예시1:
class TEST{
public:
	void Print_student(){
    	cout << this << endl;
    }
}
int main(){
	TEST st1;
    st1.Print_student();
    cout << &st1 << endl;
    return 0;
}
하면 동일한 값이 두 줄 출력됨., this는 자기 자신을 가리키는 것!
  • static 멤버 함수에서는 사용 불가.
    (class, structure 같은 비정적 멤버 함수에서만 사용 가능!)

  • 클래스의 멤버 변수와 매개 변수가 동일할 때 사용할 수 있다. (굳이 똑같이 해야할까..?)

예시2:
class STUDENT{
private:
	int age;
public:
	STUDENT(int age){
    this -> age = age;
    }
    void Print_student(){
    cout << age << "살 입니다." << endl;
    }
}

해석:
this -> age 는 멤버 변수를 의미
그냥 age 는 매개변수를 의미
  • 만든 이유
    : 함수와 같이 크기가 큰 것들을 메모리에 할당해 놓고 각 객체의 this 포인터를 함수에 넘겨서 어떤 객체가 함수를 호출했는 지 알도록 하기 위해서

출처: 공대누나
출처: 소년코딩

profile
코딩천재

0개의 댓글