ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В 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. Объектные диаграммы показывают, какие объекты:
а) существуют в данный момент;
б) взаимодействуют в данный момент;
в) принимают участие в каких-то действиях в данный момент;
г) имеют операции (методы), вызывающие объекты других классов.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
