Виртуальные методы в Конструкторе и Деструкторе 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++