Статья: Элементы класса, о которых всегда необходимо помнить
class ANY_CLASS
{
public:
ANY_CLASS(); //конструктор по умолчанию
ANY_CLASS(int d); //еще один конструктор
~ANY_CLASS(); //а это - деструктор
};
Деструктор почти всегда вызывается неявно. Вызов деструктора происходит либо при выходе объекта за пределы своей области видимости, либо при уничтожении динамического созданного (операцией new) объекта операцией delete.
7. Виртуальный деструктор.
Если класс может иметь наследников, то предпочтительнее использовать виртуальный деструктор. Синтаксис виртуального деструктора точно такой же, как и у любого другого деструктора, за исключением того, что его объявление начинается с ключевого слова virtual.
class ANY_CLASS
{
public:
ANY_CLASS(); //конструктор по умолчанию
vrtual ~ANY_CLASS(); //а это - виртуальнный деструктор
};
Объявление деструктора виртуальным не отразится на производительности. Так что имеет смысл всегда делать его виртуальным, если нет очень веских причин воздержаться от этого.
Отказ от применения виртуальных деструкторов может привести к утечкам памяти в производных классах, но это тема для отдельного разговора. К ней мы вернемся более подробно позднее.
Приведенный ниже пример придуман исклю
include "iostream.h"
// Этот класс просто демонстрирует неявные вызовы
// конструктора и деструктора
class DEMO
{
public:
DEMO() { cout " "constructor" " endl; }
virtual ~DEMO() { cout " "destructor" " endl; }
};
void main(void)