我讀關於如何實現一個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