Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Перегрузка операций для классов






Подготовка к работе. По указанной литературе и конспекту лекций повторить тему «Перегрузка операций для классов».

Разработать программу в соответствии с заданием к лабораторной работе.

 

Задание.

1. Используя класс, созданный при выполнении лабораторной работы №3, дополнить его перегруженными операциями присваивания и сложения. Все операторные функции, перегружающие операции, должны быть компонентными функциями класса. (Из класса можно удалить статические поля, их обработку в конструкторах и деструкторе. Индикационные сообщения в конструкторах и деструкторе следует сохранить.)

2. Заменить функцию доступа по считыванию/записи в выбранный элемент массива операцией индексации.

3. Заменить функции ввода и вывода данных для поля, являющегося массивом, перегруженными операциями сдвига вправо и влево соответственно. Операторные функции, перегружающие операции сдвига должны быть глобальными функциями, дружественными классу.

4. В функции main() создать:

- объект №1 при помощи стандартного конструктора;

- объекты №2 и №3 при помощи любого другого конструктора с аргументом;

- указатель на объект класса, инициализированный адресом объекта №1.

5. Проверить содержимое объектов №1, №2 и №3 с помощью перегруженной операции сдвига влево. Ввести данные в эти объекты с помощью перегруженной операции сдвига вправо. Еще раз проверить их содержимое.

6. В функции main() проверить работу перегруженных операций:

- присваивания для объектов №1 и №2;

- сложения для объектов №2 и №3;

- индексации для любого из объектов;

- контролировать результат выполнения операций при помощи операции сдвига влево.

Ход выполнения программы контролировать по сообщениям о выполняемых операциях. Сделать выводы.

7. Проверить работу операции индексации для указателя. Проверить возможность явного вызова любой операторной функции класса для любого из объектов и для указателя. Сделать выводы.

8. Проверить вызовы конструкторов и деструкторов при выполнении программы. Сопоставить сообщения о вызовах конструкторов и деструкторов с исходным текстом программы. Сделать выводы.

Сохранить файл с тестом программы для последующих работ.

 

Контрольные вопросы.

1. В чем заключается перегрузка операций для классов?

2. Что такое операторная функция?

3. Какие действия может содержать операторная функция?

4. Какие ограничения накладываются на перегружаемые операции?

5. Какие операции не могут быть перегруженными?

6. Какие варианты операторных функций по принадлежности классу могут быть при перегрузке бинарных операций?

7. Какие аргументы должны быть у операторных функций, перегружающих бинарные операции?

8. Можно ли при перегрузке бинарных операций, левым операндом которых является объект стандартного типа, использовать операторную функцию, принадлежащую классу? Почему?

9. Какие варианты операторных функций по принадлежности классу могут быть при перегрузке унарных операций?

10. Чем отличается перегрузка префиксных форм операций ++ и – – от постфиксных форм?

11. В чем заключаются особенности перегрузки операции присваивания?

12. В чем заключается особенность перегрузки операции ”–> ”?

13. В чем заключается особенность перегрузки операций сдвигов влево и вправо?

14. В чем заключаются особенности перегрузки операций new и delete?

15. В чем заключается особенность перегрузки операции ”[ ]”?

16. В чем заключается особенность перегрузки операции ”()”?

17. В чем заключаются особенности перегрузки операции преобразования типа?

18. Есть ли сходство между перегруженной операцией присваивания и конструктором копирования? Почему?

 

 

Лабораторная работа №5






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.