생성자와 소멸자

보물창고·2021년 8월 19일
0
  • 유저가 명시적으로 정의하지 않더라도 컴파일러가 알아서 디폴트 생성자를 호출하기도 한다. 이를 암시적 생성자라고 한다.

예제


-> 상속한 클래스를 객체화 했을때이다.
파생클래스에는 생성자가 없지만, 부모 클래스에는 생성자가 있기 때문에,
부모 클래스의 생성자를 호출하기 위해서는 반드시 파생클래스의 생성자를
암묵적으로 호출해야 한다.

  • 소멸자도 마찬가지이다.

생성자 호출 순서

출력해보면 부모 클래스 -> 자식 클래스 처럼 보이지만, 엄밀히 말하면,

  • 생성자의 호출 순서는 자식 클래스 -> 부모 클래스 순이고
  • 생성자 블록의 실행 순서는 부모 클래스 -> 자식 클래스 순이다.

왜 부모 클래스의 블록부터 실행되는 것일까?
만약에 부모 클래스의 protected로 포인터가 있고, 부모의 생성자에서 할당하고, 자식의 생성자에서 값을 역참조 하는 코드가 있다면 이해 될것이다.
부모 생성자에서 할당을 하지 않는다면 문제 발생한다.

소멸자 호출 순서

  • 소멸자의 호출 순서는 자식클래스 -> 부모 클래스이다.
  • 소멸자의 블록 실행 순서도 이와 동일하다. 자식 -> 부모
profile
🔥🔥🔥

0개의 댓글