Задание №3 ООП. Программа продолжает выполняться корректно. Контрольные вопросы 2
Скачать 485.02 Kb.
|
Контрольные вопросы 1 1.Почему выполняется вызов деструкторов? Для освобождения памяти. 2.Измените фрагмент программы таким образом, чтобы сообщение от деструкторов выдавалось бы 2 раза. Код: Пример выполнения: Изменение модификаторов: Программа продолжает выполняться корректно. Контрольные вопросы 2 1.Добавьте новое поле любого типа в базовый класс и выполните инициализацию объекта производного класса с использованием конструктора. Код: Выполнение: 2.Можно ли использовать конструктор производного класса без передачи параметров конструктору базового класса? Нет, компилятор выдаст ошибку. 3.Если ответ на второй отрицательный, что надо сделать, чтобы при инициализации объекта производного класса с использованием конструктора производного класса инициализация наследуемой части не выполнялась бы. Программа будет выполняться, если будет определен конструктор без параметров базового класса: Изменение модификаторов: При изменении модификаторов – компилятор выдаст ошибку доступа к члена класса a вне производного, за исключением производных от производных (если protected). Контрольные вопросы 3 1.Укажите операторы задания данных объекта производного класса в приведенном выше примере Задание данных базового класса происходит следующим образом: 2.Какое поле объекта производного класса выдает метод vivoda? Поле базового класса – a1. 3.Какая информация будет выдана, при отсутствии записи a::vivoda() Нет доступа Изменение модификаторов: При изменении на public, возможно обращении к vivoda без открытия доступа из любого места через производный класс: При изменении на protected – только из производных производных. Контрольные вопросы 4 1.Почему во втором объекте значение массива X равно ffff? Происходит явная передача значения “ffff” в конструктор базового при вызове производного. 2.Запишите в массив x слово «собака» Код: Выполнение: 3.В каком месте возникнет ошибка в случае если величина с1 будет иметь параметр private? При обращении к c1 вне класса c: Изменение модификаторов: Изменение class c:private b никак не повлияют на данную программу, но после подобного изменения будет невозможно обратиться к членам b через объект класса c. При изменении на class b:protected a также не будет изменений, но после изменений невозможно будет обратиться к членам a из вне (кроме класса c, т.к. он является наследуемым от b). При изменении b:private a обращение в членам a через b невозможно и будет выдана ошибка при попытки обращения к ним через c: Контрольные вопросы 5 1. Можно ли обращаться в объекте порожденного классе к элементам базового класса через указатели на объекты порожденного класса? Если элементы являются открытыми, то возможно, в противном случае будет ошибка доступа: Изменение модификаторов: При изменении наследования на protected или private, станет невозможно присвоение указателю ссылки на объект: |