"delete [] element" 在给定的 c++ 代码中用于实现一维数组的目的是什么?
What's the purpose of "delete [] element" in the given c++ code for implementation of a 1D array?
以下代码用于在C++中实现一维数组。在函数中
Array1D<T>& operator=(const Array1D<T>& v);
书上有句delete [] element
说是用来释放旧的space 的,我不是很懂。谁能详细解释一下为什么我们需要这个表达式?
template<class T>
class Array1D
{
public:
Array1D(int Size=0);
Array1D(const Array1D<T>& v);
~Array1D(){delete [] element;}
T& operator[](int i)const;
int SizeFunction(){return Size;}
Array1D<T>& operator=(const Array1D<T>& v);
Array1D<T>& operator+()const;
Array1D<T>& operator+(const Array1D<T>& v);
Array1D<T>& operator-()const;
Array1D<T>& operator-(const Array1D<T>& v);
Array1D<T>& operator*(const Array1D<T>& v);
Array1D<T>& operator+=(const T& x);
private:
int Size;
T* element;
};
template<class T>
Array1D<T>& Array1D<T>::operator=(const Array1D<T>& v)
{
if(this!=&v)
{
Size = v.Size;
delete [] element; // What's the purpose of this expression?
element = new T [Size];
for(int i=0;i<Size;i++)
{
element[i]=v.element[i];
}
}
return *this;
}
与其他一些语言不同,C++ 允许您更好地控制内存,但这意味着您也必须更加小心。
本质上,每次调用 'new' 时,您都在分配内存来保存您刚刚创建的新内容,在本例中是数组的元素。
一旦您使用完该内存,您需要告诉机器您不再需要它并且该内存现在 'free' 可用于其他用途。在这种情况下,有两种内存返回计算机的情况,第一种是在创建新数组之前突出显示数组正在被销毁的位置,第二种是在析构函数中,returns 所有内存用于数组本身被销毁时的数组元素。
作为所有 C++ 程序的基本规则,如果您 'new' 完成某项操作,那么您也应该 'delete' 完成它。
以下代码用于在C++中实现一维数组。在函数中
Array1D<T>& operator=(const Array1D<T>& v);
书上有句delete [] element
说是用来释放旧的space 的,我不是很懂。谁能详细解释一下为什么我们需要这个表达式?
template<class T>
class Array1D
{
public:
Array1D(int Size=0);
Array1D(const Array1D<T>& v);
~Array1D(){delete [] element;}
T& operator[](int i)const;
int SizeFunction(){return Size;}
Array1D<T>& operator=(const Array1D<T>& v);
Array1D<T>& operator+()const;
Array1D<T>& operator+(const Array1D<T>& v);
Array1D<T>& operator-()const;
Array1D<T>& operator-(const Array1D<T>& v);
Array1D<T>& operator*(const Array1D<T>& v);
Array1D<T>& operator+=(const T& x);
private:
int Size;
T* element;
};
template<class T>
Array1D<T>& Array1D<T>::operator=(const Array1D<T>& v)
{
if(this!=&v)
{
Size = v.Size;
delete [] element; // What's the purpose of this expression?
element = new T [Size];
for(int i=0;i<Size;i++)
{
element[i]=v.element[i];
}
}
return *this;
}
与其他一些语言不同,C++ 允许您更好地控制内存,但这意味着您也必须更加小心。
本质上,每次调用 'new' 时,您都在分配内存来保存您刚刚创建的新内容,在本例中是数组的元素。
一旦您使用完该内存,您需要告诉机器您不再需要它并且该内存现在 'free' 可用于其他用途。在这种情况下,有两种内存返回计算机的情况,第一种是在创建新数组之前突出显示数组正在被销毁的位置,第二种是在析构函数中,returns 所有内存用于数组本身被销毁时的数组元素。
作为所有 C++ 程序的基本规则,如果您 'new' 完成某项操作,那么您也应该 'delete' 完成它。