Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
}<br />
102<br />
VMatrix second (M, 5); // инициализируем з<strong>на</strong>чением 5<br />
second.Out (); // 6,7,8, 9,10,11, 12,13,14<br />
Процесс освобождения памяти после уничтожения объектов можно сопровождать<br />
деструктором (destructor) – бестиповым открытым методом без<br />
параметров, имя которого совпадает с именем класса и имеет префикс ~<br />
(тильда). Деструктор всегда вызывается автоматически, то есть неявно, при<br />
выходе из блока, в котором был объявлен объект. Он также включается при<br />
вызове оператора delete для указателя <strong>на</strong> объект, имеющий деструктор, или в<br />
том случае, когда необходимо удалить объект, вложенный в удаляемый. В<br />
любом случае работа деструктора сопровождает процесс освобождения памяти,<br />
выделенной конструктором. Каждый класс имеет только один деструктор,<br />
причем всегда открытый и без параметров. За работой деструктора можно<br />
по<strong>на</strong>блюдать в следующем примере:<br />
class VPair {<br />
int first, second;<br />
public:<br />
VPair (int one, int two): first (one), second (two)<br />
{ ShowMessage ("Объект создан"); }<br />
~VPair () { ShowMessage ("Объект удален"); }<br />
void Out () { ShowMessage (AnsiString (first) + '\n' + AnsiString (second)); }<br />
};<br />
void MainVPair () {<br />
{ VPair num (2,3); // объект создан<br />
num.Out (); // 2-3<br />
} // объект удален<br />
{ VPair num (4,5); // объект создан<br />
num.Out (); // 4-5<br />
} // объект удален<br />
}<br />
За освобождением памяти можно <strong>на</strong>блюдать и без деструктора. В приведенной<br />
ниже реализации объектов str, поочередно помещаемых в стек и<br />
очередь, деструктора нет:<br />
class VStackAndQueue {<br />
char *s;<br />
int i, size, top;<br />
AnsiString result;<br />
public: