디버깅 때문에 공부하던중 전에는 몰랐던 사실을 ^.^ 알게 되었내요.

생성자나 소멸자 내부에서는 vtable이 생성이 제대로 되지 않은 관계로 가상함수가

제대로 작동하지 않는군요... ^^;;; 역시 무식하면 ㅠ.ㅠ

#include <iostream>
using namespace std;

class base
{
public:
  base() { function(); }
  virtual void function() { cout << "i'm base" << endl; }
};

class derived : public base
{
public:
  derived() { }
  virtual void function() { cout << "i'm derivedi'm derived" << endl; }
};

int main()
{
  derived d;
  return 0;
}

가상함수가 제대로 동작했다면 결과는 i'm derived 이겠지만 결과는 i'm base 입니다.

출처 : http://serious-code.net/ 의 DebuggingTips 에서
AND