Объектно-ориентированное программирование



Объектно-ориентированное программирование - стр. 58


          Window ();                    //берутся стандартные размеры и положение окна

В языке C++ поддерживается три вида выделения памяти для размещения объектов: в фиксированной глобальной памяти (статическая память, static), в системном стеке (автоматическая память, automatic), в "куче" (динамическая память, dynamtic).

Чтобы разместить объект в статической памяти достаточно либо объявить его вне какой-либо функции, либо при его объявлении указать ключевое слово static. Статическая память выделяется компилятором во время компиляции программы и не меняется во время ее выполнения. Конструктор можно использовать для инициализации объектов, размещаемых в статической памяти (для выделения статической памяти под объект без его инициализации достаточно просто объявить его). Объявление

          Window main_window = Window(0.0, 0.0, 8.5, 11.0)

определяет статический объект main_window (основное окно), проинициализированный значениями параметров конструктора.

Локальные объекты, объявляемые внутри функций, размещаются в автоматической памяти (системном стеке). Их тоже можно инициализировать с помощью конструктора. Наконец, обращение к конструктору в операторе new в процессе выполнения программы порождает объект, размещаемый в динамической памяти. Например:

          Window *window = new Window (0.0, 0.0, 8.5, 11.0);

При этом выражение new Window (0.0, 0.0, 8.5, 11.0) имеет своим значением указатель на порожденный динамический объект.

Для терминации объектов можно использовать специальный метод, являющийся одним из членов класса и называемый деструктором. Как и конструктор, он имеет то же имя, что и имя класса, в котором он определен, но первым символом имени деструктора является тильда (~):

            Window::~Window ();

            {

          …    //убрать окно и перекрасить освободившуюся область

            }

Наконец, для освобождения динамической памяти от объектов, которые уже не нужны, используется операция delete, например:




Содержание  Назад  Вперед