С ++ Перегрузка операций Класс для обслуживания структур типа "Очередь с приоритетами"
Создать класс PriorQueue для работы со структурами типа "Очередь с приоритетами".
Структура типа "Очередь с приоритетами" имеет такие же свойства, как и простая очередь, но элементы ее всегда расположены в определенном порядке. Составление структуры выполняется автоматически при добавлении нового элемента. Поэтому операция pop удаляет самый большой (или маленький) элемент очереди.
Для создания объекта динамического типа и правильного его изъятия предусмотреть соответствующие конструкторы и деструкторы. Для инициализации объектов предусмотреть конструктор копирования и конструкторы с параметрами.
Создать перегружены операции:
- присвоение, символ "=";
- сравнение, символы "==", "! =";
- введение с файла, символы "<<", ">>";
- вывод в файл, символы ">>", "<<".
Предусмотреть компонентные функции:
- size - количество элементов;
- empty - возвращает значение true, если очередь пуста;
- back - ссылка на последний элемент;
- swap - обмен значениями из другой очередь;
- push - добавить новый элемент в конец очереди;
- pop - влечет самый большой (маленький) элемент;
- find - проверить, есть ли предоставленный элемент в противне;
- accumulate - накопление суммы или произведения;
- for_each - обработка элементов по предоставленной процедурой.
Разработать демонстрационно-тестирующую программу. Выполнить тестирование разработанных программных средств.
ереди.
Для создания объекта динамического типа и правильного его изъятия предусмотреть соответствующие конструкторы и деструкторы. Для инициализации объектов предусмотреть конструктор копирования и конструкторы с параметрами.
Создать перегружены операции:
- присвоение, символ "=";
- сравнение, символы "==", "! =";
- введение с файла, символы "<<", ">>";
- вывод в файл, символы ">>", "<<".
Предусмотреть компонентные функции:
- size - количество элементов;
- empty - возвращает значение true, если очередь пуста;
- back - ссылка на последний элемент;
- swap - обмен значениями из другой очередь;
- push - добавить новый элемент в конец очереди;
- pop - влечет самый большой (маленький) элемент;
- find - проверить, есть ли предоставленный элемент в противне;
- accumulate - накопление суммы или произведения;
- for_each - обработка элементов по предоставленной процедурой.
Разработать демонстрационно-тестирующую программу. Выполнить тестирование разработанных программных средств.Нигде не утверждается, что объект должен быть инициализирован, и программист может забыть инициализировать его или сделать это дважды.
ООП дает возможность программисту описать функцию, явно предназначенную для инициализации объектов. Поскольку такая функция конструирует значения данного типа, она называется конструктором. Конструктор всегда имеет то же имя, что и сам класс и никогда не имеет возвращаемого значения. Когда класс имеет конструктор, все объекты этого класса будут проинициализированы.Если конструктор требует аргументы, их следует указать:date today = date(6,4,2014); // полная форма
date xmas(25,12,0); // сокращенная форма
// date my_burthday; // недопустимо, опущена инициализация
Если необходимо обеспечить несколько инициализации объектов класса, задается несколько конструкторов:
class date {
int month, day, year;
public:
date(int, int, int); // день месяц год
date(char*); // дата в строковом представлении
date(); // дата по умолчанию: сегодня
};
Конструкторы подчиняются тем же правилам относительно типов параметров, что и перегруженные функции. Если конструкторы существенно различаются по типам своих параметров, то компилятор при каждом использовании может выбрать правильный:
date july4("Февраль 27, 2014");
date guy(27, 2, 2014);
date now; // инициализируется по умолчанию
Одним из сократить количество перегруженных функций (в том числе и конструкторов) является использование значений по умолчанию.
Конструктор по умолчанию
Конструктор, не требующий параметров, называется конструктором по умолчанию. Это может быть конструктор с пустым списком параметров или конструктор, в котором все аргументы имеют значения по умолчанию.
Конструкторы могут быть перегруженными, но конструктор по умолчанию может быть только один.
class date
{
int month, day, year;
public:
date(int, int, int);
date(char*);
date(); // конструктор по умолчанию
};