ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 8) онлайн
Вопросы
Ответы на эти вопросы вы сможете найти и приложении Ж. 1. Перегрузка операций:
а) преобразовывает операции(operator) C++ для работы с объектами;
б) предоставляет операциям C++ больше, чем они могут обработать;
в) дает новое значение существующим в C++ операциям;
г) создает новые операции C++.
2. Предположим, что класс X не использует перегруженные операции. Напи- шите выражение, в котором вычитается объект x1 класса X из другого объ- екта x2 этого же класса. Результат помещается в x3.
3. Предположим, что класс X включает в себя процедуру перегрузки опера- ции -. Напишите выражение, которое будет выполнять те же действия, что и выражение, описанное в вопросе 2.
4. Истинно ли следующее утверждение: операция >= может быть перегружена?
5. Запишите полное определение для перегруженной операции в классе Counter программы COUNTPP1, которая вместо увеличения счетчика умень- шает его.
6. Сколько аргументов требуется для определения перегруженной унарной операции?
7. Предположим, что существует класс C с объектами obj1, obj2 и obj3. Выра- жение obj3=obj1-obj2 работает правильно. Здесь перегруженная операция должна:
а) принимать два аргумента;
б) возвращать значение;
в) создавать именованный временный объект;
г) использовать объект, вызвавший операцию, как операнд.
8. Напишите полное определение перегруженной операции ++ для класса Distance из программы ENGLPLUS. Операция должна увеличивать на еди- ницу переменную класса feet, и при этом должно быть верным выраже- ние:
dist++;
9. Повторите задание из вопроса 8, но так, чтобы стало возможным выпол- нение выражения
dist2 = dist1++;
10. Чем отличается действие перегруженной операции ++ при ее использова- нии в префиксной форме от использования в постфиксной форме?
11. Вот два объявления, предназначенные для складывания двух объектов класса String:
void add (String s1, string s2) String operator + (String s)
Рассмотрим, какие из элементов первого объявления соответствуют эле- ментам второго. Заполните пробелы подходящими вариантами:
- Имени функции (add) соответствует _____ .
- Возвращаемому значению (типа void) соответствует____ .
- Первому аргументу (s1) соответствует____ .
- Второму аргументу (s2) соответствует_____ .
- Объекту, вызвавшему функцию, соответствует_____ .
а) аргумент (s);
б) объект, вызывающий операцию;
в) операция (+);
г) возвращаемое значение (типа String);
д) нет соответствия для этого элемента.
12. Истинно ли следующее утверждение: перегруженная операция всегда тре- бует на один аргумент меньше, чем количество операндов?
13. Когда вы перегружаете операцию арифметического присваивания, то ре- зультат:
а) передается объекту справа от операции;
б) передается объекту слева от операции;
в) передается объекту, вызвавшему операцию;
г) должен быть возвращен.
14. Напишите полное определение перегруженной операции ++, которая рабо- тает с объектами класса String из примера STRPLUS и выполняет изменение шрифта операнда на прописные буквы. Вы можете использовать библио- течную функцию toupper() (заголовочный файл CCTYPE), принимающую в качестве аргумента символ, который надо изменить, и возвращающую уже измененный (или тот же, если изменение не нужно).
15. Для преобразования от определенного пользователем класса к основному типу вы можете использовать:
а) встроенную операцию преобразования;
б) конструктор с одним аргументом;
в) перегруженную операцию =;
г) операцию преобразования, являющуюся членом класса.
16. Истинно ли следующее утверждение: выражение objA=objB будет причи- ной ошибки компилятора, если объекты разных типов?
17. Для преобразования от основного типа к определенному пользователем вы можете использовать:
а) встроенную операцию преобразования;
б) конструктор с одним аргументом;
в) перегруженную операцию =;
г) операцию преобразования, являющуюся членом класса.
18. Истинно ли следующее утверждение: если вы определили конструктор, содержащий определение типа aclass obj=intvar;, вы также можете записать выражение типа obj=intvar;?
19. Если объект objA принадлежит классу A, объект objB принадлежит классу В, вы хотите записать objA=objB и поместить функцию преобразования в класс A, то какой тип процедуры преобразования вы можете использовать?
20. Истинно ли следующее утверждение: компилятор не будет протестовать, если вы перегрузите операцию * для выполнения деления?
21. В диаграммах UML объединение возникает, когда:
а) в одной программе существуют два класса;
б) один класс происходит от другого;
в) в двух классах используется одна глобальная переменная;
г) один из классов вызывает метод другого класса.
22. В UML поля классов называют____ , а методы классов называ- ют ____ .
23. Истинно ли следующее утверждение: у прямоугольников, обозначающих классы, скругленные углы?
24. Направленность от класса A к классу В означает, что:
а) объект класса A может вызвать операцию объекта класса B;
б) существует взаимоотношение между классом A и классом В;
в) объекты могут переходить из класса A в класс В;
г) сообщения из класса B получает класс A.
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 36
Схожі підручники
- Міжнародні економічні зв’язки України та її інтеграція в європейські та інші світові структури
- Загальні питання з курсу «Регіональна економіка»
- семінар №5 з курсу Регіональна Економіка
- ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 11) онлайн
- Курс Інвестування (стисло)
- Трансформаційні процеси в господарському комплексі України та їхні регіональні особливості
