this 포인터

2020. 9. 10. 03:09컴퓨터 수업/C++

@느낌

멤버함수 내부에만 작성하게 될것이다. no 프렌드함수

 

@this 포인터

멤버 함수 내에서 클래스의 데이터 멤버들을 참조하는 경우에 직접 참조가 가능하기 때문에 객체명을 지정하거나 도트 연산자를 사용할 필요가 없었다.

 

하지만 연산자 오버로딩에서 중요하니까 알아야한다.

 

다음 예시를 보자.

 

class vector
{
private:
int vector[2]
public:
int inner(vector b)
{
return vector[0]*b.vector[0] +vector[1]*b.vector[1];
}
}
int main()
{
vector a,b;
cout << a.inner(b) << endl;
}

vector의 내적을 행할 때, 자연스럽게 a의 vector 데이터멤버를 쓸때 아무 것도 붙이지 않았다

 

여기에는 원래 this->vector[0] 가 붙어야한다.

 

따라서 this 포인터의 정의는,

 

다음과 같이 정리할 수 있다.

 

@this포인터의 정의

 

멤버 함수가 호출될 때 그 멤버 함수를 호출한 객체의 시작 주소를 가리키는 포인터이다.

 

this 그 자체로 의미가 있는것이지. this->가 의미 있는것이 아니다.