this pointer, static

this pointer

this 포인터

this는 클래스 멤버 함수 내에서 사용되는 특별한 포인터로, 현재 객체의 주소를 가리킨다.

사용용도

  1. 멤버변수 구분

    1. 매개변수와 멤버 변수 이름이 동일할 때 this를 사용해 멤버 변수를 명확히 구분한다.

  2. 메서드 체이닝

    1. 메서드에서 this를 사용해 현재 객체를 반환하여 메서드 체이닝을 구현할 수 있다.

    2. 현재 객체를 반환하려면 return *this와 같이 역참조한 값을 반환한다.

  3. 상수 멤버 함수

    1. const 함수 내에서 this는 const 타입이 되므로 수정할 수 없다.

static

  • 클래스 내에서 ‘하나만 존재하는’ 멤버

  • 모든 객체가 공유(shared)하는 변수, 메서드

  • "객체가 아닌, 클래스 자체에 속하는 멤버"

static 멤버 변수의 특징

객체가 몇 개여도 static 변수는 단 하나

반드시 클래스 외부에서 초기화

모든 객체가 동일한 메모리 사용

  • 하나의 값 공유 (객체마다 다른 값 대입 불가)

static 함수의 특징

static 함수는 "객체 없이 호출" 가능

this 포인터가 없음

static 함수는 static 변수만 접근 가능

실습 예제

ch07ex14_RectangleCount.cpp

this 포인터와 static 정적 변수, 메서드를 이용해 Rectangle 클래스를 생성한다.

실습 문제

ch07lab10_PointCount.cpp

this 포인터와 static 정적 변수, 메서드를 이용해 Point클래스를 생성한다.

Last updated