정체불명의 모모

[C++] 상속 관계에서 생성자, 소멸자 호출 순서 / virtual 소멸자 본문

프로그래밍(c++)

[C++] 상속 관계에서 생성자, 소멸자 호출 순서 / virtual 소멸자

정체불명의 모모 2021. 8. 11. 10:34

간단한 테스트로 결과를 확인해 보자!

1. 상속 관계에서 생성자, 소멸자 호출 순서

2. 상속 관계에서 virtual 소멸자 호출


1. 상속 관계에서 생성자, 소멸자 호출 순서

 

위의 출력값 처럼 상속 구조에서 생성자는

부모 생성자 -> 자식 생성자 -> 자식 소멸자 -> 부모 소멸자

부모에서 자식을 호출해서 생성하고 소멸시에 자식에서 닫고 선 부모도 마저 소멸시킨다.


2. 상속 관계에서 virtual 소멸자 호출

 

위 코드와 다른 부분은

Parent * parent = new Child ;

이렇게 객체를 생성했을 때, 

자식의 소멸자는 호출 되지 않는 걸 확인 할 수 있습니다.

이 때, 부모 클래스의 소멸자에 virtual 키워드를 넣게 되면 자식의 소멸자도 불러와 지게 됩니다.

짜잔~ 정상적으로 자식의 소멸자 까지 호출이 되었습니다.

상속을 하는 클래스의 경우 정상적으로 자식의 소멸자를 호출해 주려면 virtual 키워드를 잊지 말자구요!

Comments