Виртуальные методы в Конструкторе и Деструкторе C++
В конструкторе и деструкторе всегда вызовутся виртуальные методы самого класса:
class A
{
public:
virtual ~A()
{
Free();
printf("~A\n");
}
virtual void Free()
{
printf("A::Free\n");
}
};
class B: public A
{
public:
virtual ~B()
{
Free();
printf("~B\n");
}
virtual void Free()
{
printf("B::Free\n");
}
};
int _tmain(int argc, _TCHAR* argv[])
{
A* b = new B();
delete b;
return 0;
}
Вывод:
B::Free ~B A::Free ~A
Теги: C++


