我有一个abstract
Base
类和Derived
类。
int main ()
{
Base *arrayPtr[3];
for (int i = 0; i < 3; i++)
{
arrayPtr[i] = new Derived();
}
//some functions here
delete[] arrayPtr;
return 0;
}
我不确定如何使用删除运算符。如果我删除基类指针数组,如上所示,这是否会调用派生类对象的析构函数并清理内存?
最佳答案
您必须遍历数组的元素,删除
它们中的每一个。 如果已使用 new[]
动态分配数组,则调用 delete []
。
在您的示例代码中,数组分配在堆栈上,因此您不得对其调用 delete []
。
还要确保您的 Base
类有一个 virtual
析构函数。
关于c++ - 删除运算符和数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2012510/