ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 11) онлайн

Вопросы

Ответы на эти вопросы можно найти в приложении Ж.

1.            Виртуальные функции позволяют:

а)            создавать массивы типа «указатель на базовый класс», которые могут

содержать указатели на производные классы;

б)           создавать функции, к которым никогда не будет доступа;

в)            группировать объекты разных классов так, чтобы они все были доступ-

ны с помощью одного и того же вызова функции;

г)            использовать один и тот же вызов функции для выполнения методов

объектов, принадлежащих разным классам.

2.            Истинно ли утверждение о том, что указатель на базовый класс может

ссылаться на объекты порожденного класса?

3.            Пусть указатель р ссылается на объекты базового класса и содержит адрес

объекта порожденного класса. Пусть в обоих этих классах имеется невир-

туальный метод ding(). Тогда выражение p->ding(); поставит на выполне-

ние версию функции ding() из____класса.

4.            Напишите описатель для виртуальной функции dang(), возвращающей ре-

зультат типа void и имеющей аргумент типа int.

5.            Принятие решения о том, какая именно функция будет выполняться по

конкретному вызову функции, называется____         .

6.            Пусть указатель р ссылается на объекты базового класса и содержит адрес

объекта порожденного класса. Пусть в обоих этих классах имеется вирту-

альный метод ding(). Тогда выражение p->ding(); поставит на выполнение

версию функции ding() из____              класса.

7.            Напишите описатель чистой виртуальной функции aragorn, не возвраща-

ющей значений и не имеющей аргументов.

8.            Чистая виртуальная функция — это виртуальная функция, которая:

а)            делает свой класс абстрактным;

б)           не возвращает результата;

в)            используется в базовом классе;

г)            не имеет аргументов.

9.            Напишите определение массива parr, содержащего 10 указателей на объ-

екты класса dong.

10. Абстрактный класс используется, когда:

а)            не планируется создавать порожденные классы;

б)           есть несколько связей между двумя порожденными классами;

в)            с его помощью запрещено создавать какие-либо объекты;

г)            вы хотите отложить объявление класса.

 

11.          Истинно ли утверждение о том, что дружественная функция имеет до-

ступ к скрытым данным класса, даже не являясь его методом?

12.          Дружественная функция может быть использована для того, чтобы:

а)            разные классы могли пользоваться одними аргументами;

б)           разрешать доступ к классам, исходный код которых недоступен;

в)            разрешать доступ к несвязанному классу;

г)            увеличить многосторонность применения перегружаемой операции.

13.          Напишите описатель дружественной функции harry(), возвращающей ре-

зультат типа void и имеющей один аргумент класса george.

14.          Ключевое слово friend появляется в:

а)            классе, разрешающем доступ к другому классу;

б)           классе, требующем доступа к другому классу;

в)            разделе скрытых компонентов класса;

г)            разделе общедоступных компонентов класса.

15.          Напишите описатель, который в том классе, где он появится, сделает каж-

дый компонент класса harry дружественной функцией.

16.          Статическая функция:

а)            должна вызываться, когда объект уничтожается;

б)           сильно связана с индивидуальным объектом класса;

в)            может быть вызвана с использованием имени класса и имени функции;

г)            используется для создания простого объекта.

17.          Объясните, что делает по умолчанию оператор присваивания = в приме-

нении к объектам.

18.          Напишите описатель перегружаемой операции присваивания для класса

zeta.

19.          Оператор присваивания может быть перегружен с целью:

а)            хранения информации о количестве одинаковых объектов;

б)           присваивания идентификационного номера каждому объекту;

в)            проверки того, что все компонентные данные скопировались без ошибок;

г)            уведомления о том, что имело место присваивание.

20.          Истинно ли утверждение о том, что пользователь всегда должен опреде-

лять операцию для конструктора копирования?

21.          Операции, выполняемые оператором присваивания и конструктором ко-

пирования:

а)            похожи, за исключением того, что конструктор копирования создает

новый объект;

б)           похожи, за исключением того, что оператор присваивания копирует

компонентные данные;

 

в)            различны, за исключением того, что оба создают новый объект;

г)            различны, за исключением того, что оба копируют компонентные дан-

ные.

22.          Напишите описатель конструктора копирования для класса Bertha.

23.          Истинно ли утверждение о том, что конструктор копирования может быть

переопределен с целью копирования только части данных объекта?

24.          Продолжительность жизни переменной, которая является:

а)            локальной по отношению к методу, совпадает с продолжительностью

жизни функции;

б)           глобальной, совпадает с продолжительностью жизни класса;

в)            нестатическим компонентным данным объекта, совпадает с продолжи-

тельностью жизни объекта;

г)            статической внутри метода, совпадает с продолжительностью жизни

этой функции.

25.          Истинно ли утверждение о том, что возврат по значению локальной пере-

менной метода не создает никаких проблем?

26.          Объясните разницу в выполнении следующих двух выражений:

person p1(p0);

person p1 = p0;

27.          Конструктор копирования запускается, когда:

а)            функция возвращается по значению;

б)           аргумент передается по значению;

в)            функция возвращается по ссылке;

г)            аргумент передается по ссылке.

28.          На что ссылается указатель this?

29.          Если в заданном классе переменная da является компонентными данными,

присвоит ли выражение this.da=37; значение 37 переменной da?

30.          Напишите выражение, с помощью которого функция может возвращать

весь объект, методом которого она является, без создания временных объ-

ектов.

31.          Прямоугольник в объектной диаграмме означает:

а)            общую группу объектов;

б)           класс;

в)            экземпляр класса;

г)            все объекты класса.

32.          Линии между объектами в объектной диаграмме UML называются               .

33.          Истинно ли утверждение о том, что объект A может быть связанным с объ-

ектом B только в данный момент и более ни в какой иной?

 

34.          Объектные диаграммы показывают, какие объекты:

а)            существуют в данный момент;

б)           взаимодействуют в данный момент;

в)            принимают участие в каких-то действиях в данный момент;

г)            имеют операции (методы), вызывающие объекты других классов.

 

34