Читайте также: |
|
Деструктор не имеет аргументов и возвращаемого значения;
Деструктор не может быть объявлен как const или static;
Деструктор не наследуется;
деструктор может быть виртуальным (и чаще всего бывает таким, будет рассмотрено позже в теме “виртуальные методы”).
Деструктор вызывается автоматически, когда объект выходит из области видимости:
Для локальных объектов — при выходе из блока, в котором они объявлены;
Для глобальных — как часть процедуры выхода из main;
Для объектов, заданных через указатели, деструктор вызывается неявно при использовании операции delete.
Если в классе явно не указано ни одного деструктора, компилятор создает его автоматически.
В случае, если у вас есть поля-указатели, необходимо реализовать деструктор самостоятельно, включив в него инструкции освобождения памяти для полей-указателей!
Не вздумайте удалять объект более 1 раза!
Если объект был создан динамически (посредством new), необходимо явное использование операции delete, которая инициирует запуск деструктора.
Пример работы с деструкторами
class TNamedComplex {
public:
Int re; int im;
char *name;
TNamedComplex() {name = “”}
~TNamedComplex() { delete []name; }
…
};
TComplex B(1, 2, “b”); // удаляется автом.
TComplex *A = new TComplex(2, 3, “qq”);
Delete A;
Дружественные функции и классы. Определение, синтаксис объявления и пример использования.
Дата добавления: 2015-10-02; просмотров: 101 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Конструктор по умолчанию. Определение, свойства, синтаксис объявления и пример использования. | | | Используются для получения непосредственного доступа извне к скрытым полям класса, то есть расширения интерфейса класса. |