반응형
Today
Total
Recent Posts
Recent Comments
Archives
11-27 13:01
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
관리 메뉴

UD_park's IT story

[C++] This Pointer에 대한 기본 개념과 사용법 본문

IT - Language/C++

[C++] This Pointer에 대한 기본 개념과 사용법

kingllzn 2018. 6. 19. 15:58
반응형
SMALL

(학습 서적 이것이 C++이다에서

내용 발췌하였습니다)

 

[보기용 예제 소스 코드에서 오류 발생시에

댓글이나 방명록에 글을 남겨 주시면 수정/보완하겠습니다]

 

 

이번에는 정말 어려운 개념이자

사용법인 This Pointer에 대한

포스팅을 해보겠습니다

 

 

This pointer의 정의란

다음과 같습니다
 

① 작성 중인 클래스의 실제 인스턴스에 대한 주소를 가리키는 포인터


② 멤버 값의 주소를 this가 불러서 값을 읽어오는 형태


③ 자기 자신을 return 할 때 사용함

솔직히 저는 이렇게 정의해도

무슨 말인지 정확하게 이해가 잘

되지 않았었습니다

 

그래서 제가 공부하고있는

"이것이 C++이다"의 예제 코드를

한 줄 한 줄 해석하고 설명과 비교하며

해독해서 간신히 이해했습니다

 

그럼 소스 코드를 보며

쉽게 설명해드리겠습니다

 

보다시피 17번, 20번, 23번, 26번

줄들의 코드들은 같은 결과를 나타냅니다

 

원래는 12번 줄의 매개 변수자리에

있는 주석문과 14번 줄의 주석문

그리고 마지막으로 36번 주석문 안의 &a

 

이 아이들은 존재하지만 프로그램 작성자의

눈에는 보이지 않도록 숨겨져 있다고

생각하시면 되겠습니다

 

17번 줄과 23번 줄의 코드의 차이에

대해서 얘기를 해보자면

17번 줄은 흔히 프로그램을 작성하는

사람들이 작성하는 코드이지만

23번 줄의 코드는 작성자

즉, 사람이 17번 줄 같이 코드를

작성하더라도 컴퓨터인 컴파일러는

23번 줄로 바꿔 읽어들이고

실행한다는 것입니다

 

이것은 비단 17번 줄과 23번 줄만의

해당되는 것이 아니라

12번
14번
17번
20번
23번
26번
36번 줄에 모두 해당됩니다

 

 

그리고 하나 중요한 점이 있습니다

 바로 this 포인터를 절대 생략할 수

없는 경우가 존재합니다

 

아래의 예를 참고로

설명해보겠습니다

 

void InputData(int Number)
 {
 this -> Number = Number;
 }

 

위와 같은 코드에서

매개 변수 Number와

멤버 변수 Number의 이름이

같기 때문에 멤버 변수인지
 구별할 수 없습니다

 

그래서 this 포인터를  이용하여

매개 변수임을 명시해야 합니다

 

 

혹시 다른것에 대해 궁금하신게

있으시다면

댓글에 달아주세요

 

아는것이면 친절하게 쉽게

모르는것이면 또 제가 알아내서

친절하게 쉽게 포스팅해서

설명해드리겠습니다

반응형
LIST
Comments