Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы Осадчий А.В. гр.010902.docx
Скачиваний:
9
Добавлен:
24.04.2019
Размер:
143.34 Кб
Скачать

13. Время жизни переменных и объектов.

Локальные переменные, т. е. объявленные внутри блока, а также переменные с классом памяти register или auto, имеют время жизни только на период выполнения того блока, в котором они объявлены. Если переменная объявлена внутри блока с классом памяти static или extern, то она имеет время жизни на период выполнения всей программы;Переменная, объявленная глобально, т. е. вне всех блоков, существует на протяжении всего времени выполнения программы;

14. Область действия класса. Управление доступом к членам класса. Отделение интерфейса от реализации

Отделение интерфейса от реализации облегчает модификацию программ. Изменения в реализации класса не влияют на клиента до тех пор, пока интерфейс класса, изначально предназначенный для клиента, остается неизменным. Каждое определение класса обычно помещается в заголовочный файл, а определения функций-элементов этого класса поме¬щаются в файлы исходных кодов с теми же базовыми именами. Заголовочные файлы включаются (посредством #include) в каждый файл, в к-ом ис¬пользуется класс. Управление доступом к Эл-там Спецификаторы доступа к элементу public (открытая часть класса (интерфейс).

В интерфейсе описываются операции, которые класс предоставляет своим клиентам.) и private protected ( защищенные, закрытая часть класса наз-ся реализацией класса. В ней обычно описываются данные класса.)Закрытые элементы класса могут быть доступны только для ф-ций-эл-тов (и дружественных функций) этого класса.Открытые элементы класса могут быть доступны для любых ф-ций в программе.Основная задача открытых эл-тов: дать клиентам класса представление о возможностях (услугах), которые обеспечивает класс. Этот набор услуг составляет открытый интерфейс класса. Клиентов класса не должно касаться, каким образом класс выполняет их задачи. Клиент класса может быть ф-цией-эл-том другого класса или гло¬бальной функцией. Из того, что данные класса закрытые, не следует, что клиенты не могут изменять эти данные. Данные могут быть изменены ф-циями-эл-тами или друзьями этого класса. Эти ф-ции должны быть спроектированы так, чтобы гарантировать целостность данных. Доступ к закрытым данным класса должен тщательно контролироваться использованием функций-элементов, называемых функциями доступа.

class Time { public:

Time();

void setTime(int,int,int);

void printMilitary();

void printStandart();

private:

int hour; int minute; int second; };

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

После создания объекта его эл-ты могут быть инициализированы с помощью ф-ции конструктор. Конструктор — это функция-элемент класса с тем же именем, что и класс.

Функция-конструктор – инициализирует объект во время его создания.

Конструктор вызывается автоматически во время создания (объявления) объекта. При инициализации глобальн. или 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. Аргументы по умолчанию нельзя задавать одновременно в определении и в прототипе ф-ции. Аргументы по умолчанию должны быть константными или глобальными переменными. Они не могут быть локальными переменными или другими параметрами.