- •Языки программирования и методы трансляции. Ответы на экзаменационные вопросы.
- •1 Курс 2 семестр
- •1 Вопрос.
- •2 Вопрос.
- •3 Вопрос.
- •4 Вопрос.
- •5 Вопрос.
- •6 Вопрос.
- •7 Вопрос.
- •8 Вопрос.
- •9 Вопрос.
- •10 Вопрос.
- •11 Вопрос.
- •12 Вопрос.
- •13 Вопрос.
- •14 Вопрос.
- •15 Вопрос.
- •16 Вопрос.
- •17 Вопрос.
- •18 Вопрос.
- •19 Вопрос.
- •20 Вопрос.
- •21 Вопрос.
- •22 Вопрос.
- •23 Вопрос.
- •24 Вопрос.
3 Вопрос.
Определение объекта. Способы доступа к данным и методам автоматических и динамических объектов.
Объектом или экземпляром класса называют переменную типа класс.
Для определения объекта используется следующая конструкция:
<имя класса><имя объекта>;
Время жизни и видимости объектов зависит от вида и места их определения. Различают глобальные, автоматические и динамические объекты.
1). Глобальные объекты создаются в начале программы и разрушаются при ее завершении.
2). Автоматические объекты создаются при входе в блок и разрушаются при выходе из него.
3). Динамические объекты создаются в динамической памяти в процессе выполнения программы оператором new и разрушаются оператором delete.
Для автоматических объектов доступ данных не из класса осуществляется с помощью конструкции: <имя объекта>.<имя класса>::<имя поля>;
Для обращения к методу не из класса можно использовать конструкцию: <имя объекта>.<обращение к методу>;
Доступ к элементам динамических объектов предусматривает явное использование указателя на объект и операцию косвенного выбора элементов ‘->’.
Для обращения к полям данных динамического объекта из вне следует использовать конструкцию: <указатель на объект>-><имя поля>;
Для обращения к методу динамического объекта следует использовать следующую конструкцию: <указатель на объект класса>-><обращение к методу>;
Замечания:
1). В одном и том же методе мы можем использовать переменные с одним и тем же именем, но принадлежащие разным областям видимости;
2). С++ допускает раздельную компиляцию частей программы: можно определение класса разместить в отдельном файле, а главную функцию в другом файле, но при этом подключить файл с классом.
4 Вопрос.
Определение конструктора. Форматы вызова конструктора.
Конструктор – это метод класса, который автоматически вызывается при объявлении (определении) объекта или при динамическом создании объекта.
Конструктор распределяет память под объект и инициализирует поля этого объекта.
Определение конструктора внутри класса:<имя класса>(<список формальных параметров>){<операторы>};
Формат вызова конструктора:
<имя класса><имя объекта>(<список параметров>);
Правила при работе с компилятором:
1). Имя конструктора должно совпадать с именем класса;
2). Не определяется тип возвращаемого объекта;
3). Может иметь несколько конструкторов с разными параметрами (перегрузка функций);
4). Параметры могут иметь любой тип кроме этого типа класса;
5). Компилятор создает его автоматически;
6). Конструкторы не наследуются.
5 Вопрос.
Способы инициализации данных объекта с помощью конструктора.
Существует 2 способа:
1). Передача значений параметров в тело конструктора;
2). Перемещение списка инициализаторов данных объектов. Этот список помещается между списком параметров и телом конструктора.
Синтаксис определения конструктора:
<имя класса>(<список параметров>):<список инициализаторов>{<тело конструктора>};
6 Вопрос.
Определение и вызов деструктора.
Деструктор – это метод класса, который используется для разрушения объекта. Он освобождает память, выделенную под объект. Деструктор является антиподом конструктора.
Если в классе не определен деструктор, компилятор создает его по умолчанию.
Формат описания деструктора:
~<имя класса>(){<операторы>};
Правила при работе с деструктором:
1). Имя должно совпадать с именем класса;
2). Не имеет возвращаемого значения;
3). Не имеет параметров;
4). Не может быть перегружен;
5). Вызов деструктора для уничтожения динамического объекта выполняется с помощью оператора delete.
