Для школы мне дали интерфейс класса, чтобы определить мой собственный класс массива (не наследуется).
У меня проблемы с перегрузкой оператора присваивания (=) и оператора сравнения (==), а также оператора индекса.
Это было дано мне в интерфейсе класса:
Array& operator = (Array const& array1); // overload assignment operator
bool operator == (Array const& array1); // overload == operator
int const& operator [] (unsigned int index) const; // overload index operator
int& operator [] (unsigned int index); // overload index operator
То, что я не могу понять, это как назначить это. Если массив, который вы хотите присвоить новой переменной, передается функции = как вы возвращаете значение этого массива, чтобы присвоить ему новую переменную. Или я просто выделяю новую ячейку памяти, и она автоматически назначает ее так называемой функции?
С помощью оператора == как узнать, с чем он сравнивается? Как я могу сравнить значения, я не знаю, как ссылаться на то, что вызвало функцию?
Я почти не знаю, как перегрузить оператор индекса. Если переменная, использующая оператор индекса, указывает на первое целое в массиве, как мне увеличить его, чтобы вернуть значение индекса, который был вызван?
Не говоря уже, я не уверен, для чего именно мы его перегружаем, и две перегрузки двух операторов индекса выглядят одинаково. Я не знаю, что для них сделать.
Мой учитель сказал мне, что оператор присваивания похож на конструктор копирования, который я написал так:
Array::Array(Array const& oldarray)
{
int *arraycopy;
arraycopy = new int[oldarray.length] // length is a member variable that has already been initiated
for(int i = 0; i < oldarray.length; i++) {
arraycopy[i] = oldarray[i];
}
}
Это то же самое для оператора присваивания? Меня смущает все это, и я буду очень признателен за любую помощь! Спасибо!