C++/Class 2021. 3. 19. 19:49

유도된 클래스들의 소멸 순서

  • 말단(자식)부터 소멸된다고 생각하면 된다.

    #include <iostream>
    
    class A
    {
    public:
      A(int a = 1024)
      {
        std::cout << "A : " << a << std::endl;
      }
    
      ~A()
      {
        std::cout << "Destructor A" << std::endl;
      }
    };
    
    class B : public A
    {
    public:
      B(double b = 3.14)
      {
        std::cout << "B : " << b << std::endl;
      }
    
      ~B()
      {
        std::cout << "Destructor B" << std::endl;
      }
    };
    
    class C : public B
    {
    public:
      C(char c)
      {
        std::cout << "C : " << c << std::endl;
      }
    
      ~C()
      {
        std::cout << "Destructor C" << std::endl;
      }
    };
    
    int        main()
    {
      using namespace std;
    
      C c('a');
    }
    
    /* stdout
    A : 1024
    B : 3.14
    C : a
    Destructor C
    Destructor B
    Destructor A
    */

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

C++ 상속과 접근 지정자  (0) 2021.03.20
C++ 상속과 패딩  (0) 2021.03.20
C++ 유도된 클래스들의 생성 순서  (0) 2021.03.19
C++ 상속 Teacher-Student 예제  (0) 2021.03.19
C++ 상속 기본 예제  (0) 2021.03.19