디버깅 때문에 공부하던중 전에는 몰랐던 사실을 ^.^ 알게 되었내요.
생성자나 소멸자 내부에서는 vtable이 생성이 제대로 되지 않은 관계로 가상함수가
제대로 작동하지 않는군요... ^^;;; 역시 무식하면 ㅠ.ㅠ
가상함수가 제대로 동작했다면 결과는 i'm derived 이겠지만 결과는 i'm base 입니다.
출처 : http://serious-code.net/ 의 DebuggingTips 에서
생성자나 소멸자 내부에서는 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;
}
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 에서