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

Получить работу

Работы предоставляются в качестве примера, выдача данных работ как собсвенных запрещена!
Название: 11 практическая
Дисциплина: Объектно-ориентированное программирование
Краткое описание:

Тема: «Перегрузка операций»

Цель работы: Изучить механизм перегрузки операций.

Задание: Все классы следует наделить конструкторами, деструктором. Необходимо явно реализовать конструктор копирования и перегрузить оператор присваивания. Необходимо подготовить демонстрацию по работе перегруженных для класса операторов.

Варианты:

  1. Напишите класс Bird, содержащий строковый элемент и статический int. В конструкторе по умолчанию используйте int для автоматической генерации идентификатора, который вы встраиваете в строку, вместе с именем класса (Bird # 1, Bird # 2 и т. Д.). Добавьте оператор << для ostreams, чтобы распечатать объекты Bird. Напишите оператор присваивания = и конструктор копирования. В main () убедитесь, что все работает правильно.
  2. Создать класс, описывающий тип Time. Класс должен включать в себя атрибуты, описывающие часы, минуты, секунды и иметь метод для вывода времени на экран. Для данного класса перегрузить следующие бинарные операторы: суммы(+), разности (-).
  3. Создайте класс RationalNumber со следующими возможностями:
    • · Создайте конструктор, который предотвращает использование знаменателя 0 в дроби, уменьшает или упрощает дроби, которые не находятся в сокращенной форме, и избегает отрицательных знаменателей.
    • · Перегрузите операторы сложения, вычитания, умножения и деления для этого класса.
    • · Перегрузите операторы отношения и равенства для этого класса.
  4. Напишите класс Time, который представляет время. В классе должно быть три поля для часов, минут и секунд. У него должен быть конструктор для инициализации часов, минут и секунд. Метод printTime () для печати текущего времени. Перегрузите следующие операторы: оператор плюс (+) (сложить два объекта времени на основе 24-часовых часов) и < (сравните два временных объекта).
  5. Создать класс ZooAnimal, включающий в себя атрибуты, описывающие имя животного, вид животного, номер клетки, вес, дата взвешивания и иметь метод для вывода информации о животном по номеру клетки и конструктор с инициализацией данных. Реализовать метод вывода на экран информации о животных по номеру клетки. Перегрузить следующие бинарные операторы: проверка на соответствие введенной дате взвешивания (==), уменьшать вес на 1 кг (-=).
  6. Создать класс String. Объект класса должен характеризоваться следующими свойствами: длина строки, динамически выделяемый массив символов, заканчивающийся символом ‘ ’, для хранения элементов строки. Предусмотреть несколько конструкторов для создания объектов класса, в том числе и конструктор с параметром, который задает длину будущей строки. Для данного класса реализовать метод вывода строки на экран, перегрузить следующие бинарные операторы: сцепление строк (+), удаление подстроки из строки (-) {“qwert”-“we”=qrt”, {“qwerty”-“tu”=“qwerty”, “qwert”-“qwert”=””}. Учесть тот случай, когда результатом операции может быть пустая строка (строка нулевой длины).

Мой вариант: 6. В этот раз я решил реализовать класс с использованием string и vector. Основная строка будет храниться в векторе, состоящем из char.

...

Метод print() в цикле проходится от 0 до _len и выводит _str, если константа SHOW_LEN равна правде, то дополнительно выводится длинна строки.

Operator + в цикле проходится по второй строке и добавляет её элементы к созданному вектору на основе вектора _str. А затем полученный вектор передается в конструктор и возвращается в качестве объекта.

Operator - проверяет, что подстрока по длине меньше строки, затем создаются два временных вектора (переданной строки и строки _str). После чего создаётся еще один вектор, в который будет помещаться текущая проверяемая подстрока, которая с каждой иттерацией цикла будет смещаться на 1 символ вперёд, примерная иллюстрация, представлена на рисунке 1.

Когда функция находит подстроку в строке, она записывает во второй временный вектор всю строку до начала подстроки и после её конца (начало подстроки + её длина).

Если константа CUT_ALL_SUBSTRINGS равна правде, то программа продолжает поиск и удаление подстрок, и так как используется дополнительный вектор-буфер, данные переписываются из него, что позволяет удалить все подстроки из строки.

По завершению цикла полученный вектор-буфер в виде объекта MyString возвращается пользователю.