і виконання програми. У таких випадках має сенс застосування деструкторів. p align="justify"> Кожна зі створених досі програм створювала об'єкти на самому початку свого виконання, просто оголошуючи їх. При завершенні програм C + + знищував об'єкти. Якщо ви визначаєте деструктор всередині своєї програми, C + + буде автоматично викликати деструктор для кожного об'єкта, коли програма завершується (тобто коли об'єкти знищуються). Подібно конструктору, деструктор має таке ж ім'я, як і клас об'єкта. p align="justify"> Деструкція являє собою функцію, яку C + + автоматично запускає, коли він або ваша програма знищує об'єкт. Деструкція має таке ж ім'я, як і клас об'єкта; однак ви предварявшая ім'я деструктора символом тильди (~), наприклад ~ employee. У своїй програмі ви визначаєте деструктор точно так само, як і будь-який інший метод класу. p align="justify"> Як приклад розглянемо деякий клас String:
# include "iostream.h"
# include "string.h" String {* QuoteString; StringLength;: (char *);// Конструктор
~ String ();// Деструктор
}; :: String (char * InitString)
{= new char [strlen (InitString) +1]; (QuoteString, InitString); (! QuoteString) <<"Недостатньо пам'яті!"; = strlen (QuoteString);
} :: ~ String ()// Звільнення пам'яті
{<<"Рядок" <
}
void main ()
{
String First ("Перший рядок");// Виклик конструктора First
{
String Second ("Другий рядок");// Виклик конструктора
// для Second
// Оператори програми
}// Виклик деструктора
// для Second
// Оператори програми
}// Виклик деструктора
// для First
Результатом роботи цієї програми буде таке повідомлення:
СтрокаПервая строкаОсвобождена
СтрокаВторая строкаОсвобождена
. Пpимеp програми з конструкторами і деструкторами
Продовжимо виконання завдання з прикладу попередньої глави для об'єктів класу "Комплексні числа" в частині програмування конструкторів і деструкторів:
/*********************/
/* Constructors & */
/* Destructors of */
/* class Complex */
/*********************/
/* v.25.12.2002 */
# include "iostream.h"// Для cin, cout см.последующіе глави
class Complex {
...