Получить работу
Тема: «Перегрузка операций»
Цель работы: Изучить механизм перегрузки операций.
Задание №1: Для одной из прошлых программ создайте статические члены-данные класса:
- Добавить статическое поле int сount, выступающее в роли счетчика объектов класса.
- Деструктор класса должен уменьшать на единицу значение счетчика
- Добавить статический метод int getCount() возвращающий значение счетчика
- Продемонстрировать изменение значения статического поля.
Задание №2: Модифицируйте прошлую программу или напишите новую:
- Определить какие методы являются константными, определить константные параметры и константные возвращаемые значения методов.
- Добавить константное поле, хранящее идентификатор объекта (номер созданного объекта), предусмотреть методы вывода информации о идентификаторе.
- Описать и инициализировать обычные и константные объекты.
- Выполнить вызовы обычных и константных методов для каждого вида объектов.
- Провести тестирование программы: Откомпилировать программу. Имеются ли ошибки компиляции и какие? Если имеются, то закомментировать соответствующие строки кода и вновь провести компиляцию. Какие предупреждения выдает компилятор и в чем их смысл? Как их можно объяснить с позиции обеспечения надежности программы?
Здесь помимо прочего имеется статический атрибут _counter, который считает кол-во созданных объектов, а также метод getCount, который этот атрибут возвращает.
Также здесь имеется константный метод print, который выводит данные в стандартный вывод.
В функции main я создал два объекта, один константный, а второй обычный, при вызове у константного объекта метода print, ошибки не возникает, а при попытке изменения данных через set, появляется ошибка. При выводе и изменении неконстантного объекта ошибок не возникает, это видно на рисунке 2.
Задание №3: Изучить дополнительный материал по дружественным функциям и напишите небольшую программу, которая их использует.
Я решил доработать прошлый код и добавил 4 новых функции: setLogin, которая задаёт логин, printPassword, которая печатает пароль, заменяя все символы кроме первого и последнего на *, getLogin, которая является дружественной и возвращает логин и setPassword, которая также является дружественной и задаёт пароль.
Из результата видно, что дружественные функции могут иметь доступ к приватным атрибутам и даже изменять их.