Основы программирования
Вопросы для подготовки к коллоквиуму
1 Курс, весна, 2014-2015
Введение в ооп.
Инкапсуляция. Полиморфизм. Наследование.Основы понятия класса. Общий формат объявления класса. Доступ к членам класса. Конструкторы и деструкторы. Конструкторы с параметрами.Введение в наследование. Указатели на объекты. Присваивание объектов. Передача объектов функциям. Объекты в качестве возвращаемого значения функцией. Дружественные функции (обзор). Массивы объектов. Указатель THIS. Операторы NEW и DELETE.
Что определяет класс? Чем обличается класс от объекта?
Можно ли объявлять массив объектов? А массив классов?
Разрешается ли объявлять указатель на объект? А указатель на класс?
Допускается ли передавать объекты в качестве параметров, и какими способами? А возвращать как результат?
Как называется использование объекта одного класса в качестве поля другого класса?
Является ли структура классом? Чем класс отличается от структуры?
Объясните принцип инкапсуляции.
Что такое композиция?
Для чего используются ключевые слова public и private?
Можно ли использовать ключевые слова public и private в структуре?
Существуют ли ограничения на использование public и private в классе? А в структуре?
Обязательно ли делать поля класса приватными?
Что такое метод? Как вызывается метод?
Может ли метод быть приватным?
Как определить метод непосредственно внутри класса? А вне класса? Чем эти определения отличаются?
Можно в методах присваивать параметрам значения по умолчанию?
Что обозначается ключевым словом this?
Для чего необходимо определение класса?
_________ имеет такое же отношение к _________, как стандартный тип данных к переменной этого типа.
В определении класса члены класса с ключевым словом private доступны:
любой функции программы;
в случае, если вам известен пароль;
методам этого класса;
только открытым членам класса.
Напишите определение класса Leverage, включающего одно закрытое поле типа int с именем crowbar и одним открытым методом с прототипом void pry().
Напишите оператор, создающий объект lever1 класса Leverage, описанного в вопросе 21.
Операция точки (операция доступа к члену класса) объединяет следующие два элемента (слева направо):
член класса и объект класса;
объект класса и класс;
класс и член этого класса;
объект класса и член этого класса.
Напишите оператор, который вызовет метод pry() объекта lever1 (см. вопросы 21 и 22).
Методы класса, определенные внутри класса, по умолчанию становятся _________, ________ .
Напишите метод getcrow() для класса Leverage (см. вопрос 21), который будет возвращать значение поля crowbar. Метод следует определить внутри определения класса.
Конструктор вызывается автоматически в момент______________ объекта.
Имя конструктора совпадает с именем_____________ .
Напишите конструктор, который инициализирует нулевым значением поле crowbar класса Leverage (см. вопрос 21). Конструктор следует определить внутри определения класса.
Верно или неверно следующее утверждение: класс может иметь более одного конструктора с одним и тем же именем?
Методу класса всегда доступны данные:
объекта, членом которого он является;
класса, членом которого он является;
любого объекта класса, членом которого он является;
класса, объявленного открытым.
Предполагая, что метод getcrow(), описанный в вопросе 29, определен вне класса, объявите этот метод внутри класса.
Единственным формальным различием между структурами и классами в С++ является то, что_______________.
Пусть определены три объекта класса. Сколько копий полей класса содержится в памяти? Сколько копий методов функций?
Классы полезны потому, что:
не занимают памяти, если не используются;
защищают свои данные от доступа со стороны других классов;
собирают вместе все аспекты, касающиеся отдельной вещи;
адекватно моделируют объекты реального мира.
Константный метод, вызванный для объекта класса:
может изменять как неконстантные, так и константные поля;
может изменять только неконстантные поля;
может изменять только константные поля;
не может изменять как неконстантные, так и константные поля.
Зачем нужны константные методы? Чем отличается определение константного метода от обычного?
Может ли константный метод вызываться для объектов-переменных? А обычный метод — для объектов-констант?
Истинно ли следующее утверждение: объект, объявленный как константный, можно использовать только с помощью константных методов?
Сколько места в памяти занимает объект класса? Как это узнать?
Продолжительность жизни переменной, которая является:
локальной по отношению к методу, совпадает с продолжительностью жизни функции;
глобальной, совпадает с продолжительностью жизни класса;
нестатическим компонентным данным объекта, совпадает с продолжительностью жизни объекта;
статической внутри метода, совпадает с продолжительностью жизни этой функции.
Истинно ли утверждение о том, что возврат по значению локальной переменной метода не создает никаких проблем?
Если в заданном классе переменная da является компонентными данными,присвоит ли выражение this.da=37; значение 37 переменной da?
Напишите выражение, с помощью которого функция может возвращать весь объект, методом которого она является, без создания временных объектов.
