Жизненный цикл класса
Крайне редкой является ситуация, когда объект существует в памяти все то время, пока выполняется программа. Вообще говоря, время жизни объекта определяется областью действия его имени. В зависимости от места расположения оператора определения объекта, он может располагаться в глобальном или локальном сегменте памяти. Для экономии ресурсов и большей понятности программ обычно объекты создаются по мере того, как в них возникла необходимость, и удаляются, когда таковая необходимость отпала.
Для правильной инициализации объектов существуют специальные функции - конструкторы. Соответственно, для корректного освобождения занятых объектом ресурсов операционной системы служат деструкторы. Пример класса с конструктором и деструктором на C++:
class SomeClass {
private:
// Просто некое целочисленное поле класса -
// для демонстрации инициализации полей в конструкторе.
int _field;
public:
// Пустой конструктор (без параметров).
SomeClass() {
};
// Конструктор, содержащий некий параметр.
SomeClass(int f) {
_field = f;
};
// Деструктор класса.
~SomeClass() {
// В данном случае действие бессмысленно,
// оно демонстрирует, что в деструкторе можно
// что-либо выполнять. Как правило, в деструкторе
// освобождают занятые в ходе работы класса
// ресурсы операционной системы. Например,
// закрывает файлы, которые были открыты объектом.
_field = 0;
};
};
Работа с объявленным выше классом из программы могла бы выглядеть следующим образом:
// Цикл for нужен для создания вложенного блока программы,
// по завершению которого отработается деструктор.
for (int i=0; i<2; i++) {
// Неявно будет вызван конструктор класса, имеющий
// пустые параметры.
SomeClass s;
}; // Вложенный блок закончился, объект s больше не
// существует. Следовательно, будет вызван деструктор.
// Неявно будет вызван конструктор класса, имеющий
// целочисленный параметр.
SomeClass * s1 = new SomeClass(3);
// Будет вызван деструктор класса, класс - уничтожается.
delete( s1 );
-
Содержание
- Оглавление
- Введение.
- Предмет рассмотрения данного курса.
- Одно-, двух- и многоуровневые приложения.
- Интернет.
- Адрес в интернете
- 2001:0Db8:11a3:09d7:1f34:8a2e:07a0:765d
- Имя в интернете
- Службы (сервисы)
- Сокета.
- Что такое "сокета" (socket) ?
- Создание серверной сокеты (пример на языке c).
- Сериализация
- Основы верстки: таблицы
- Основы верстки: фреймы
- Основы верстки: позиционирование участков сайта
- Протокол http
- Структура запроса (Request).
- Структура ответа (Response).
- Перспективы развития http.
- Интернет-приложения
- Web-приложения
- Web-сервисы
- Особенности проектирования
- Особенности пользовательского интерфейса
- Программирование интернет-приложений
- Объектно-ориентированное программирование
- Классы и объекты
- Жизненный цикл класса
- Статические члены класса
- Инкапсуляция
- Наследование
- Полиморфизм
- Интерфейсы
- Событийно-ориентированное программирование
- Совместная работа над проектом
- Технологии создания web-клиентов
- Dom (Document Object Model)
- Каскадные таблицы стилей
- JavaScript
- Обфускация и динамическое получение скриптов
- Java Applets
- ActiveX/npapi
- Adobe Flash
- Web-серверы
- Nginx (engine X)
- Технологии, применяемые на стороне сервера
- ИнтерфейсCgi
- КонцепцияMvc
- Сервлеты
- JavaScript
- Хранение данных