C++/Class 2021. 3. 15. 23:38

this

  • 인스턴스 객체의 주소를 가리킨다.

예제

  #include <iostream>

  class Simple
  {
    int    id_;

  public:
    Simple(const int& id_in)
    {
      setID(id_in);

      std::cout << this << std::endl;
    }

    void    setID(int id) { id_ = id; }
    int    getID() { return id_; }
  };

  int        main()
  {
    Simple s1{ 1 }, s2{ 2 };

    s1.setID(2);
    s2.setID(4);
    std::cout << &s1 << '\n' << &s2 << std::endl;
  }

  /* stdout
  00EFFD14
  00EFFD08
  00EFFD14
  00EFFD08
  */
  • 인스턴스를 생성할 때 멤버 함수들을 따로따로 만드는게 아니라, 한번 정의한 것을 계속 사용하는게 효율적이다.
  • 이를 위해서는 인스턴스의 주소를 멤버 함수가 사용될 때 전달해야 한다.
  • 위 예제의 main 함수에서 s1.setID(2) 명령줄은 다음과 같이 작동하는 것이다.
    • 첫 인자로 인스턴스의 주소를 넣는 방식이다.
  • Simple::setID(&s1, 2);
  • -> : 포인터의 member selection operator
  • 체이닝(Chaining)

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

C++ static (Class)  (0) 2021.03.15
C++ 체이닝(Chaining)  (0) 2021.03.15
C++ 소멸자 (Destructor)  (0) 2021.03.15
C++ 변환 생성자(Converting Constructor)  (0) 2021.03.15
C++ 복사 생성자(Copy Constructor)  (0) 2021.03.12