Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 适用于我自己定制的Arraylist(C+;+;)的析构函数_C++_Arrays_Templates_Destructor - Fatal编程技术网

C++ 适用于我自己定制的Arraylist(C+;+;)的析构函数

C++ 适用于我自己定制的Arraylist(C+;+;)的析构函数,c++,arrays,templates,destructor,C++,Arrays,Templates,Destructor,在我的windows机器上,我没有收到任何警告/错误,但在Linux机器上我收到了(我不记得它到底是什么)。我只在程序结束时调用析构函数 这是一个样品 标题 template<class T> class CustomArray { T *someArray; int numElements; CustomArray<T>(); ~CustomArray<T>(); } //destructor template<

在我的windows机器上,我没有收到任何警告/错误,但在Linux机器上我收到了(我不记得它到底是什么)。我只在程序结束时调用析构函数

这是一个样品

标题

 template<class T> 
 class CustomArray {
   T *someArray;
   int numElements;

   CustomArray<T>();
   ~CustomArray<T>();
 }

 //destructor
 template<class T>
 CustomArray<T>::~CustomArray() {
   for(int k=0; k<numElements;k++)
     someArray[i].~T();
   delete [] someArray;
 }
模板
类自定义数组{
T*someArray;
国际货币基金组织;
自定义数组();
~CustomArray();
}
//析构函数
模板
CustomArray::~CustomArray(){

对于(intk=0;k是的,有。您不需要手动调用它(至少在本例中不是这样)-只在某些情况下显式调用析构函数

您只需在析构函数中使用
delete[]
,就可以了-当然,假设
someArray
分配了
new[]


myArray
对象处于自动存储中,将被删除(并调用其析构函数)自动地,在作用域的末尾。

你已经把它倒过来了。编写析构函数的全部目的是不必做任何特殊的事情来释放内存。它会被自动调用。@john如果对象在自动存储中,构造函数将初始化它(应该提到)。那么你要说的是,删除[]someArray,是否会自行清除数组中用于类T的每个实例的内存?
 int main() {
   CustomArray<int> myArray;
   //initialize myArray
   myArray.~CustomArray();
   return 0;
 }