对于学校,我得到了一个类接口来定义我自己的数组类(不是继承的)。
我在重载赋值运算符 (=) 和比较运算符 (==) 以及索引运算符时遇到问题。
这是在类界面中给我的:
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
我似乎无法理解的是如何分配它。如果要将要分配给新变量的数组传递给函数=如何返回该数组的值以将其分配给新变量。还是我只是分配一个新的内存位置,然后它会自动将它分配给所谓的函数?
使用 == 运算符,我怎么知道它与什么比较?我如何比较值,我不知道如何引用所谓的函数?
我几乎不知道如何重载索引运算符。如果使用索引运算符的变量指向数组中的第一个 int,我如何递增它以返回被调用的索引的值?
更不用说,我不确定我们重载它到底是为了什么,而且两个索引运算符的两个重载看起来是一样的。我不知道该为他们做什么。
我的老师告诉我赋值运算符就像复制构造函数一样,我是这样写的:
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];
}
}
赋值运算符也是一样的吗?我对这一切感到困惑,我将非常感谢任何和所有的帮助!谢谢!