이유
1. 객체의 생성과 소멸과정 중 가상 함수가 날라간 상태라면 신비로운 동작을 하기 때문이다.

왜냐하면
파생 객체가 만들어 질때, 베이스 생성자가 호출되는 동안베이스 생성자만 초기화 값을 가지고 있고  베이스 클래스의 소멸자가 호출되어 질때, 이미 파생 클래스의 데이터들은 이미 소멸되었기 때문에, 파생클래스 쪽으로 내려가서 호출되어지지 않기 때문이다!

주의점
1. 객체의 생성과 소멸 시점에 대해서 숙지하고 있어야 한다. 참조 구역 참조

참조
상속 관계에 있는 객체의 생성자와 소멸자 호출 시점
1. 생성자 호출 시점
첫째, 베이스 생성자 호출 후 베이스 생성자의 멤버 객체들 초기화
둘째, 파생 생성자 호출 후 파생 생성자의 멤버 객체들 초기화

2. 소멸자 호출 시점
첫째, 파생 소멸자 호출 후 파생 생성자 멤버 객체 소멸
둘째, 베이스 생성자 호출 후 베이스 생성자 멤버 객체들 초기화

이것만은 잊지 말자!
1. 생성자 혹은 소멸자 안에서는 가상 함수를 사용하지 말자, 왜냐하면 참조

관련 링크
http://evax.springnote.com/pages/871402
http://ljh131.tistory.com/16

posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요