Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора 57стр.doc
Скачиваний:
54
Добавлен:
15.06.2014
Размер:
478.21 Кб
Скачать

Вопрос 6. Понятие конструктора .Использование констр-ра с аргументами по умолчанию. Конструктор по умолчанию.

После создания объекта его эл-ты могут быть инициализированы с помощью ф-ции конструктор. Конструктор — это ф-ция-эл-т клас­са с тем же именем, что и класс. Ф-я-конструктор – инициализирует объект во время его создания. Конструктор вызывается автоматически во время создания (объявления) объекта. При инициализации глобальн. или static объектов конст-р вызыв. 1 раз; для локальн. объектов – всякий раз, когда встреч. объявление объекта.

Если для класса были описаны конструкторы, то невозможно описать переменную этого класса так, чтобы констр-р не был вызван.

Данные-элементы класса не могут получать начальные значения в определении класса. Они либо должны получить эти значения в конструкторе класса, либо их значения можно установить позже, после со­здания объекта. Конструкторы не могут указывать типы возвращаемых зна­чений или возвращать какие-то значения. Конструкторы можно перегружать, чтобы обеспечить множество начальных значений объектов класса.

Использование конструкторов с аргументами по умолчанию

Конструктор может содержать значения аргументов по умолчанию. Задание в конструкторе аргументов по умолчанию позволяет гарантировать, что объект будет нахо­диться в непротиворечивом состоянии, даже если в вызове конструктора не указаны никакие значения. Конструктор, у к-го все аргументы — аргументы по умолчанию (или который не требует никаких аргументов), называется конструктором с умолчанием, т.е. кон­структором, к-ый можно вызывать без указания каких-либо аргументов.

Применение аргумента по умолчанию явл-ся скрытой формой перегрузки ф-ций. Например: void f(int a=0, int b=0);

Теперь эту функцию можно вызывать тремя способами: с двумя заданными аргументами, с первым заданным аргументом(b по умолчанию =0), без аргументов. Пример: f(); \\ a=0 b=0

f(10); \\ a=10 b=0

f(10, 99); a=10 b=99

Невозможно передать по умолчанию значение а и при этом задать b. Аргументы по умолчанию нельзя задавать одновременно в определении и в прототипе ф-ции. Аргументы по умолчанию должны быть константными или глобальными переменными. Они не могут быть локальными переменными или другими параметрами.

Вопрос 7. Понятие деструктора. Когда вызывается конструктор и деструктор.

Конструкторы инициализируют объект. Некоторым классам требуется функция, которая будет гарантированно вызвана при уничтожении объекта, аналогично конструктору при создании объекта. Такие функции наз-ся—деструкторы (специальная функция-элемент класса). Они очищают память и освобождают ресурсы. Деструкторы вызываются неявно, когда автоматическая переменная выходит из области видимости, удаляется объект, хранящийся в свободной памяти. Наиболее часто деструктор используется для освобождения памяти, выделенной конструктором. Имя деструк­тора совпадает с именем класса, но перед ним ставится символ тильда (~). Конструкторы и деструкторы вызываются автоматически. Порядок вызова зависит от области видимости объектов. Для любых объектов конструктор вызывается перед выполнением любой другой функции, включая функцию main. Деструктор вызывается после выполнения функции main или если идёт вызов функции exit. Деструктор не вызывается если выполнение программы прекращено с помощью функции abort.

Деструктор не принимает никаких параметров и не возвращает никаких значений. Класс может иметь только один деструктор — перегрузка деструк­тора не разрешается.

Конструкторы объектов, объявленных в глобальной области действия, вызываются раньше, чем любая функция данного файла (включая main) начинает выполняться. Соответствующие деструкторы вызываются, когда за­вершается main или когда вызывается функция exit.

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

Конструкторы статических локальных объектов вызываются сразу же, как только процесс выполнения достигает места, где объекты были впервые объявлены. Соответствующие деструкторы вызываются, когда завершается main или когда вызывается функция exit.