{
왜냐하면, 파생 객체의 생성자 호출 순서는 항상 기반 객체이기 때문이다.
잘 이해가 안간다....?
그러니까 기반 객체의 생성자가 호출 될 때 가상 함수가 호출 되어 지면, 파생 객체는 아직 만들어 지지 않았기 때문에, 파생 객체의 함수가 호출 되지 않고, 기반의 함수가 호출 된다.
이는 개발자에게 가독성은 물론이거나와 몹시 어렵다는 느낌을 줄 수 밖에 없다. 디스트럭트 역시 마찬가지다.
예제는?
무엇이 호출 되는지 보길 바란다.
겪어 봤나?
2008년 9월경, Template Method Pattern 을 사용하겠다는 자만으로, 겪어 봤었다. 그 후로는 가상 함수 호출 할 떄 각별히 주의를 갖게 되었다.
책의 내용은?
객체 생성 후에 가상 함수 호출 하라는 식으로 예제가 있다.(사후 컨스트럭션 호출...) Exceptional C++ 에선 비멤버 함수를 하나 만들어 두고, 거기에 일 처리 방식을 기록 한 뒤에, 객체를 밀어 넣어 템플릿 메서드 패턴을 구현하고 있는 것을 보았다.
객체 내부에서 하는 것도 좋은 방법이지만, 비멤버 함수 하나로 구현 할 수 있다면, 그게 더 좋은거 같다. 왜냐하면, 클래스의 무게를 줄여주기 때문이다.
}
최근댓글