我读关于如何实现一个ArrayList我的数据结构的书,我对擦除功能如下代码:为什么在此代码中调用析构函数?
template<typename T>
ArrayList<T>::~ArrayList() {
delete [] dynArr;
}
我:
template <typename T>
void ArrayList<T>::erase(int index) {
//Delete the element whose index is "index"
//Throw illegalIndex exception if no such element
checkIndex(index);
std::copy(dynArr+ index + 1, dynArr + listSize, dynArr + index);
dynArr[--listSize].~T(); //invoke destructor
}
的析构函数的定义对于那里到底发生了什么感到困惑。是不是只有在需要删除整个数组时需要删除的析构函数?
您可以调用dynArr的元素的析构函数而不是类的析构函数ArrayList – Felix
请注意,在现实世界中几乎不应该看到这种类型的代码。让编译器在99.99%的时间内为你调用析构函数。 – jia103