Деструкторы.


Многим типам нужна обратная операция – деструктор, чтобы обеспечить правильную очистку объектов типа. Имя деструктора для класса Х это ~х() дополнение конструктора. В частности многие классы используют одну и ту же память из свободной памяти которая распределяется конструктором и освобождается деструктором.
Пример использования стека:
Class char_stack{
int size;
char *top;
char *s;
public:
char_stack(int sz){
top=s=new char[size=sz];}
~ char_stack(){delete s;}//деструктор
void push(char c) {*top++=c’}
char pop(){return*(—top;)}
}
Когда объект char_stack выходит из области видимости то вызывается деструктор.
Void f(){
char_stack s1(100);
char_stack s2(200);
s1.push(‘a’);
s2.push(s1.pop());
char ch=s2.pop();
}
При возврате управления из f() массивы заданные конструкторами будут освобождаться.
Создание объекта.
Объекты могут быть созданы так:
1. автоматический объект – создается при каждом появлении его объявления в выполнении программы и уничтожении при каждом выходе из блока в котором он появляется.
2. Объект свободной памяти – создается при помощи операции new и уничтожается при помощи операции delete.
3. Статический объект – создается однажды при запуске программы и уничтожается при ее завершении.
4. Объект член класса – определяется как член др. класса.

Загрузка...