C++ common sense 1 ~ 5

  1. 자식 객체를 생성하면 부모–>자식 순서로 생성자가 호출되며, 소멸자는 그 반대로 호출된다.
    • 결과
       Base()
       Derived()
       ~Derived()
       ~Based()
      
  2. 객체가 생성되면 해당 클래스에 포함된 객체들의 생성자가 먼저 호출된다. 생성자가 실행될 시점에는 클래스에 속한 객체들의 생성자가 모두 호출된 상태이다.
    • 결과
       Base()
       Derived()
       Handler()
       ~Handler()
       ~Derived()
       ~Base()
      
  3. 포인터 변수만 선언한다고 객체가 생성되지 않는다.

  4. 스택에 할당된 객체는 스코프가 끝나면 소멸되지만, 힙에 할당된 객체는 꼭!!! delete를 호출하여 메모리를 해제해 줘야 소멸자가 호출된다.
    • 결과
       Base()
       Derived()
       Handler()
       ~Derived()
       ~Base()
       ~Handler()
      
  5. 스마트 포인터를 사용하면 delete를 신경쓰지 않아도 된다.
    • 결과
       Base()
       Derived()
       Handler()
       ~Handler()
       ~Derived()
       ~Base()