본문 바로가기
[ CODING STUDY ]/》C++ 공부

C++ 10장 [this 포인터]

by MRG 2022. 10. 27.
728x90
반응형

▣ 안녕하세요. 이번장에서는 this포인터를 공부해보도록 하겠습니다.

this 포인터는 말 그대로 포인터를 의미하며 단순한 포인터가 아닌 멤버 함수를 호출한 객체 자신을 가리키는 포인터,

객체 자신에 대한 포인터를 의미합니다.

코드를 작성하며 공부해보도록 하겠습니다.

 

▣ 기본적인 클래스와 멤버 함수를 만들어주세요. 

this->n = n;코드를 보시면 이게 무슨 코드이지?라고 생각하실 거라 생각합니다.

이 코드를 해석하면 this(자신의 객체 주소를 의미하고),  ->는 주소에 접근하는 연산자입니다.

그리고 = n 은 멤버 함수에 있는 int n 매개변수의 값을 현재 객체에 있는 멤버 변수에 대입을 하라는 의미입니다.

디버그하고 출력을 해보면 각각 객체마다 지정했던 멤버 함수에 값이 출력되는 걸 확인할 수 있습니다.

 

▣ 이번에는 this 키워드에 대한 이해를 돕기 위해 다른 코드를 작성해보겠습니다.

작성하고 코드를 풀어보면 sum(Calculator* const add, int n)처럼 매개변수에 Calculator* 포인터 자료형에 add라는 이름으로 포인터 변수 이름을 정하고, int n 매개변수 값을 받아옵니다.

그리고 c1.sum(&c1, 10) 이런식으로 주소를 전달하고 그 주소의 객체에 멤버 변수에 매개변수 값을 지정하고 디버그를 하면 각각 객체마다 멤버 함수를 다르게 접근하여 값이 나오는 걸 확인할 수 있습니다.

그럼 왜  this 키워드를 사용할까요?

 

▣ 클래스의 멤버 함수의 경우 메모리 공간을 공유하기 때문에 이를 구분하기가 어렵습니다.

멤버 함수가 호출될 때 컴파일러에 의해 객체를 구분할 수 있도록 전달되는 객체의 주소가 있습니다.

그렇기 때문에호출된 멤버 함수는 자신을 호출한 객체가 무엇인지 알 수 있습니다.
코드를 확인해보겠습니다.

 

▣ 이렇게 this를 출력해보면 각자 다른 객체의 주소가 나오는 걸 확인할 수 있습니다.

this 포인터는 변수이기 때문에 주소 값을 저장하고 있습니다.

 

 

728x90
반응형

'[ CODING STUDY ] > 》C++ 공부' 카테고리의 다른 글

C++ 12장 [함수객체]  (1) 2022.11.03
C++ 11장 [string]  (0) 2022.10.28
C++ 9장 [메모리 할당]  (0) 2022.10.26
C++ 8장 [포인터 객체]  (0) 2022.10.20
C++ 7장 [인라인 함수]  (0) 2022.10.13

댓글