C++/Class 2021. 3. 16. 00:10

익명 객체 (Anonymous Class)

  • R-value처럼 사용할 수 있다.

예제

  #include <iostream>

  class A
  {
  public:
      A()
      {
          std::cout << "Constructor : " << this << std::endl;
      }

      ~A()
      {
          std::cout << "Destructor : " << this << std::endl;
      }

      void    print()
      {
          std::cout << this << std::endl;
      }
  };

  int        main()
  {
      A a;
      a.print();
      a.print();

      A().print();
      A().print();
      A().print();
  }

  /* stdout
  Constructor : 00D8F96B
  00D8F96B
  00D8F96B
  Constructor : 00D8F89F
  00D8F89F
  Destructor : 00D8F89F
  Constructor : 00D8F893
  00D8F893
  Destructor : 00D8F893
  Constructor : 00D8F887
  00D8F887
  Destructor : 00D8F887
  Destructor : 00D8F96B
  */
  • 익명 객체는 할 일을 마치면(명령줄이 끝나면) 바로 사라진다. (소멸자 호출)

  • 그럼에도 스택은 내려가지 않고 계속 쌓이는 것을 볼 수 있다.

  • double(8) 같은 문법도 익명 객체와 비슷한 느낌인 것 같다.

    • (double)8과의 사소한 차이점이 있는 것 같긴 한데, 나중에 찾아봐야겠다.

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

C++ 객체들의 관계 (Object Relationship)  (0) 2021.03.19
C++ Nested Types  (0) 2021.03.16
C++ friend  (0) 2021.03.16
C++ 정적 멤버 함수 (Static Member Function)  (0) 2021.03.16
C++ 정적 멤버 변수 (Static Member Variable)  (0) 2021.03.15