Для этого задания вы добавите копиюконструктор, деструктор и три перегруженных оператора в класс IntCollection.На приведенной ниже схеме проектирования функции-члены черного цвета представляют код, который уже был реализован.Вы будете реализовывать зеленые элементы.Каждый элемент, который вы будете добавлять в класс, описан под диаграммой.
Личный:
int size // количество целых чисел, хранящихся в настоящее время в коллекции int
intacity // общее количество элементов, доступных в массиве данных
int * data // указатель на динамически размещенный массив данных
void addCapacity ();// приватная функция для выделения большего количества памяти при необходимости
Public:
IntCollection ()
~ IntCollection ()
IntCollection (const IntCollection & c)
void add (int value)
int get (int index)
int getSize ()
IntCollection & operator = (const IntCollection & c)
оператор bool == (const IntCollection & c)
IntCollection & operator << (значение int) </p>
Конструктор копирования.Конструктор копирования должен выполнить глубокое копирование объекта аргумента, то есть он должен создать IntCollection с тем же размером и емкостью, что и аргумент, с собственной полной копией массива данных аргумента.
Оператор присваивания (знак равноОператор присваивания также должен выполнить глубокое копирование объекта аргумента.Он должен возвращать себя (или, что более эффективно, ссылку на себя) для поддержки нескольких назначений в одной строке, например, a = b = c.Если вы сначала реализуете свой оператор присваивания, его можно использовать в конструкторе копирования, но это не является обязательным требованием.
Оператор Is Equals (==).Оператор «равно» должен возвращать значение «истина», если размер объекта аргумента совпадает с размером принимающего объекта, а значения в массивах данных обоих объектов идентичны.
Оператор вставки (<<),Оператор вставки должен добавить параметр int в принимающую IntCollection.Функциональность точно такая же, как и у функции add (), т.е. добавляет целые в коллекцию.Однако обратите внимание, что эта функция должна возвращать ссылку на себя, чтобы поддерживать несколько вставок в одной строке, например, c << 45 << -210.В отличие от оператора присваивания, этот возврат должен быть выполнен по ссылке, потому что каждая вставка фактически изменяет объект IntCollection, а вставка выполняется слева направо. </strong>
Деструктор.Функция add () вызывает addCapacity () для выделения памяти, когда ей нужно больше места.Нигде в этой программе память не освобождается с помощью delete [], что означает утечку памяти!Добавьте деструктор, который правильно обрабатывает это.
addCapacity.Обратите внимание, что addCapacity () является закрытой функцией-членом.Что произойдет, если вы попытаетесь вызвать его извне класса, то есть, добавив строку ниже к main ()?