我有一个关于 C++ 中的运算符重载的问题。
对于作业,我必须编写一个包含数组的类,有点像 Java 中的 ArrayList。
我必须做的一件事是跟踪数组的大小。大小是包含的元素数量,而容量是在类必须扩展数组之前可以包含的最大数量。
客户端代码在调用构造函数时指定大小。但是,当添加新元素时,我必须想办法改变大小。
我的老师说了一些关于能够为等式的不同方面重载运算符的内容。这是真的吗,还是我误会了她?如果这行得通,那将是我的问题的最佳解决方案。
我当前对 [] 运算符的重载是:
int & ArrayWrapper::operator [] (int position){
if(position == _size){
if(_size == _capacity){
changeCapacity(_capacity+10);
}
}
return _array[position];
}
这适用于检索,但我想拥有它,以便如果有人从“=”的左侧调用它,那么它会检查它是否需要扩展大小。
编辑:如果这不是真的,任何人都可以想出不同的解决方案来解决这个问题吗?我想到的一种解决方案是让 getSize() 方法在每次调用时都遍历整个数组,但我真的不想使用该解决方案,因为它看起来很俗气。
编辑:为澄清起见,我不是在问我的数组扩展是否有效。每次添加新元素时,我都需要将大小加 1。例如,如果客户端创建一个大小为 15、容量为 25 的数组,然后尝试向 Array[15] 添加一些内容,则应该将大小增加到 16。我想知道是否有办法通过重载来做到这一点。