본문 바로가기
C++/기초

C++ 기초 : 클래스 (2)

글: 시플마 2024. 4. 13.

아래 코드는 가변 배열을 구조체로 구현한 것입니다.

 

가변 배열을 위한 함수들을 보면 

공통적으로 어떤 가변 배열에 해당 함수를 적용할지

선택하기 위해 가변 배열의 주솟값을 받고 있습니다.

 

 

그런데 클래스의 경우

 

멤버 함수 SetInt를 보면 인자로 값 하나만 받고 있습니다.

 

그럼 main 함수에서 cMy형 객체 3개를 만든 후

SetInt 함수를 호출합니다. SetInt 함수를 어떤 객체에

적용할 것인지 컴파일러는 어떻게 아는 걸까요?

 

객체마다 주솟값이 존재할 것이고 이 주솟값을 찾아가서

그곳에 있는 객체에 SetInt 함수를 적용하겠죠.

 

 

그럼 그 주솟값은 어디에 있을까요?

 

바로 13번째 줄에서 볼 수 있듯이

 

this라는 키워드에 있습니다. 이를 this 포인터라고 하죠.

 

 

사실 아래 코드처럼

 

SetInt 함수는 객체의 주솟값과

정수 하나를 받아서 해당 주솟값으로 간 후,

해당 객체의 m_i라는 멤버 변수에 전달받은 값을 대입하는 것입니다.

 

어차피 어떤 객체에, 함수를 적용할지 지정해야 하기 때문에

객체의 주솟값은 무조건 알고 있어야 합니다. 이것을 매번 인자로

적는 것은 번거롭습니다. 그래서 컴파일러가 알아서 할 수 있게

개선되었고 인자로 객체의 주솟값을 받기 위해 인자를 적을 필요가 

없어진 겁니다.

 

 

SetInt 함수에 중단점을 걸고

 

현재 호출된 함수(SetInt)의 지역 변수를 보여주는 로컬 창을 확인해 보면

실제로 this가 존재하고 그곳에 주솟값이 들어간 것을 볼 수 있습니다.

 

 

 

 

 

강의 출처 : https://www.youtube.com/watch?v=PFc4g8mxOiI&list=PL4SIC1d_ab-aOxWPucn31NHkQvNPHK1D1&pp=iAQB


 

'C++ > 기초' 카테고리의 다른 글

C++ 기초 : 클래스를 이용한 배열  (0) 2024.04.14
C++ 기초 : 클래스 (3)  (0) 2024.04.13
C++ 기초 : 클래스 (1)  (0) 2024.04.13
C++ 기초 : 리스트 (3)  (0) 2024.04.12
C++ 기초 : 리스트 (2)  (0) 2024.04.11