UD_park's IT story
[C++] This Pointer에 대한 기본 개념과 사용법 본문
(학습 서적 이것이 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 포인터를 이용하여
매개 변수임을 명시해야 합니다
혹시 다른것에 대해 궁금하신게
있으시다면
댓글에 달아주세요
아는것이면 친절하게 쉽게
모르는것이면 또 제가 알아내서
친절하게 쉽게 포스팅해서
설명해드리겠습니다
'IT - Language > C++' 카테고리의 다른 글
[C++] C언어란? - C에 대한 기본 개념 및 설명 (0) | 2021.05.22 |
---|---|
[C++] 복사 생성자(Copy Constructor) (3) | 2018.06.22 |
[C++] 메소드(Method)에 대한 기본 정의와 사용법 & const (0) | 2018.06.19 |
[C++] 생성자와 소멸자, 디폴트/변환 생성자 (0) | 2018.06.16 |
[C++] 객체 지향과 Class의 개념 및 사용법 (0) | 2018.06.16 |